C语言处理CSV数据
2024-09-06 13:41:34
以下代码为博客
《Python的并行求和例子》:
http://www.cnblogs.com/instant7/p/4312786.html
中并行python代码的C语言重写版。
用C来跑一遍单线程也只需要50秒,比python 开4进程的实现要快6倍多,CPU占用率也只用python的1/4。
看来计算密集型应用还是需要用这些不顺手的老古董来弄的:)
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <time.h> using namespace std; char *trim(char *str)
{
char *p = str;
while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')
p ++;
str = p;
p = str + strlen(str) - ;
while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')
-- p;
*(p + ) = '\0';
return str;
} int main(){
cout<<"start time: ";
system("Echo %Date% %Time%");
FILE *fexp, *fpred;
fexp = fopen("D:\\kaggle\\rain\\train_exp.csv", "r");
fpred = fopen("D:\\kaggle\\rain\\trainChangeTimePeriod.csv","r"); char expLine[];
char predLine[]; fgets(expLine, sizeof(expLine), fexp);
fgets(predLine, sizeof(predLine), fpred); double squareErrorSum = ;
int rowCnt = ;
while(fgets(expLine, sizeof(expLine), fexp)) {
//printf("%s", expLine);
fgets(predLine, sizeof(predLine), fpred);
//printf("%s", predLine); char *save_ptr;
char *expId = trim(strtok_s(expLine, ",", &save_ptr));
if (expId == NULL) {
return -;
}
char *exp = trim(strtok_s(NULL, ",", &save_ptr));
double expVal = atof(exp);
//printf("%s\t%s\n", expId, exp); char *predId = trim(strtok_s(predLine, ",", &save_ptr));
//printf("%s\n", predId);
double prob[];
rowCnt += ;
if (rowCnt % == )
cout << rowCnt << " finished"<<endl;
for (int i = ; i < ; i++){
char *temp = trim(strtok_s(NULL, ",", &save_ptr));
prob[i] = atof(temp);
squareErrorSum += pow((prob[i]-(i>=expVal)),);
//cout<<squareErrorSum<<endl;
}
}
double score = squareErrorSum / ( * rowCnt);
cout<<"Score: "<<score<<endl;
cout<<"end time: ";
system("Echo %Date% %Time%");
system("pause");
return ;
}
linux的话分割字符串函数要换成:
strtok_r
C/C++对CSV的处理参考自:
《c语言读取csv文件和c++读取csv文件示例分享》
http://www.jb51.net/article/47962.htm
最新文章
- EasyPR--开发详解(5)颜色定位与偏斜扭转
- Oracle AWR报告提取方法
- win8改win7笔记
- 非常强大的table根据表头排序,点击表头名称,对其内容排序
- HashSet<;T>;类 用法
- HTML页面实现返回顶部效果 go to top
- DataGridView 行、列的隐藏和删除
- TcxVerticalGrid demo
- 关于GC进行垃圾回收的时机
- C#教程之打印和打印预览
- SGU 156. Strange Graph(欧拉路)
- 217. Contains Duplicate (leetcode)
- 【玩转树莓派】使用 sinopia 搭建私有 npm 服务器
- Spark Streaming高级特性在NDCG计算实践
- S2.1 修复图像小程序(简单版)
- python---自己实现双向链表常用功能
- DOM 操作成本究竟有多高,HTML、CSS构建过程 ,从什么方向出发避免重绘重排)
- 【原创】Python第二章——标识符命名规则
- PyCharm配置Python3开发环境
- centos7 hive + 远程mysql 搭建笔记
热门文章
- TcxComboBoxProperties下拉框填充
- Monit-开源服务器监控工具
- 长期专业版 mac pycharm
- Mac&;Appium&;Python自动化测试-环境搭建之安卓SDK
- BZOJ2208 [Jsoi2010]连通数[缩点/Floyd传递闭包+bitset优化]
- 前端小白页面开发注意事项及小工具(html\css\js)
- MySQL主从同步、读写分离配置步骤、问题解决笔记
- stm32——modbus例程网址收藏
- Mysql判断是否某个字符串在某字符串字段的4种方法
- 特殊变量的处理(一)onehot&;dummy