最近在寫分類演算法,需要和
svm效果做對比。發現svm讀檔案的速度慢的不能忍,所以想**一下windows下的最快的檔案讀取速度。
輸入說明:
1.輸入資料可能有幾千個1m左右的小檔案
2.也可能為100m左右的單個檔案
3.最終資料有數w行,每一行格式如下
:::...
+1 201:1 3148:1 3983:1 4882:1
-1 874:1 3652:1 3963:1 6179:1
每一行大約有幾千個特徵。詳見
svm資料集。
分析:
如果檔案是空格分隔的數字,就算用ifstream
無腦讀也不會慢到**去,windows下能輕鬆達到1s 10m左右的速度。但這裡需要一邊讀一邊解析,若用c++直接讀,由於ifstream的緩衝太低效,導致速度急劇下降(測試1)。若用fread或者非同步讀取,速度必然會更快。
讀取大小13m的1800行,每行約4千個特徵的資料:
1.直接c++getline,然後用istringstream來解析:
int parserline(const std::string &line, instance &in)
in.label = label;
int id = 0;
char sep = 0;
double val = 0;
while (is >> id >> sep >> val)
}
總耗時:
[2014-04-22-10-19-20]num:1184 |total read time: 53.917999
2.直接c++getline,然後自己解析:
int praserdata(const char *str, int n, std::vector&instances) else if (str[pos] == '-') else if (str[pos] == ':') else if (str[pos] >= '0' && str[pos] <= '9' || str[pos] == '.') else if (str[pos] == ' ' && is_v)
++pos;
} if (pos == n)
instances.push_back(in);
return pos;
}}
總耗時:
[2014-04-22-10-18-14]num:1184 |total read time: 24.702000
快速讀取SharedPreferences資料
在開發時時常要用到sharedpreferences存入和讀取一些資料,如果activity很多的話,每次都定義一次sharedpreferences非常麻煩。其實可以很簡單地將sharedpreferences的讀寫抽出來形成乙個工具類,方便呼叫 public class sharedprefer...
PHP如何快速讀取大檔案
在php中,對於檔案的讀取時,最快捷的方式莫過於使用一些諸如file file get contents之類的函式,簡簡單單的幾行 就能 很漂亮的完成我們所需要的功能。但當所操作的檔案是乙個比較大的檔案時,這些函式可能就顯的力不從心,下面將從乙個需求入手來說明對於讀取大檔案時,常用的操作方法。需求需...
PHP如何快速讀取大檔案
原文 php如何快速讀取大檔案 在php中,對於檔案的讀取時,最快捷的方式莫過於使用一些諸如file file get contents之類的函式,簡簡單單的幾行 就能 很漂亮的完成我們所需要的功能。但當所操作的檔案是乙個比較大的檔案時,這些函式可能就顯的力不從心,下面將從乙個需求入手來說明對於讀取...