以下代码为博客

《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

最新文章

  1. EasyPR--开发详解(5)颜色定位与偏斜扭转
  2. Oracle AWR报告提取方法
  3. win8改win7笔记
  4. 非常强大的table根据表头排序,点击表头名称,对其内容排序
  5. HashSet&lt;T&gt;类 用法
  6. HTML页面实现返回顶部效果 go to top
  7. DataGridView 行、列的隐藏和删除
  8. TcxVerticalGrid demo
  9. 关于GC进行垃圾回收的时机
  10. C#教程之打印和打印预览
  11. SGU 156. Strange Graph(欧拉路)
  12. 217. Contains Duplicate (leetcode)
  13. 【玩转树莓派】使用 sinopia 搭建私有 npm 服务器
  14. Spark Streaming高级特性在NDCG计算实践
  15. S2.1 修复图像小程序(简单版)
  16. python---自己实现双向链表常用功能
  17. DOM 操作成本究竟有多高,HTML、CSS构建过程 ,从什么方向出发避免重绘重排)
  18. 【原创】Python第二章——标识符命名规则
  19. PyCharm配置Python3开发环境
  20. centos7 hive + 远程mysql 搭建笔记

热门文章

  1. TcxComboBoxProperties下拉框填充
  2. Monit-开源服务器监控工具
  3. 长期专业版 mac pycharm
  4. Mac&amp;Appium&amp;Python自动化测试-环境搭建之安卓SDK
  5. BZOJ2208 [Jsoi2010]连通数[缩点/Floyd传递闭包+bitset优化]
  6. 前端小白页面开发注意事项及小工具(html\css\js)
  7. MySQL主从同步、读写分离配置步骤、问题解决笔记
  8. stm32——modbus例程网址收藏
  9. Mysql判断是否某个字符串在某字符串字段的4种方法
  10. 特殊变量的处理(一)onehot&amp;dummy