各位高手好,
小弟目前有一隻非常要求執行效率的程式
本來是用JAVA在寫,且也已經盡量的去改善效能
但始終突破不了紀錄保持人的速度,
最近想說改用C++來寫寫看
可是光是第一步讀檔步驟,速度馬上就輸了java的bufferedReader
我想說把C++的讀檔也改成可以像JAVA那樣有緩衝區,減少從硬碟讀取檔案的次數
但每次檔案讀到尾端時,就會出現亂碼,我緩衝區的大小設1024
我在猜是不是因為最後檔案接近尾端時,檔案內容根本不足1024,所以才會出現亂碼?
想請各位高手指點我一下
ifstream fileInput;
fileInput.open ("1.txt", ios::binary );
char buff[1024];
string str;
while(fileInput){
fileInput.read(buff,1024);
str = buff;
cout<<str<<endl;
}
這是我用小檔案測試讀檔的內容:http://ppt.cc/EnhB
如果真得是因為檔案最後的內容不足1024。因此出現亂碼
那想請問該如何才能知道最後還剩多少內容還沒讀取?
以便讓我修改緩衝區的大小
或者說我這實做方法根本就是錯誤的,謝謝。
另外就是雖然C++的list跟JAVA的linkedList內部實作上也許不太一樣
但原理應該是大同小異(我猜的)
不曉得為什麼同樣都是push_back相同的數量
但c++的list卻比java慢很多@@
例如說我塞一千個string進去,C++要0.6秒,JAVA卻只要0.009秒
整個速度有著很大的差距@@
想請問說是有什麼關鍵的東西是我沒注意到的嗎?
感謝各位