各位高手好,
小弟目前有一只非常要求执行效率的程式
本来是用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;
}
这是我用小档案测试读档的内容:
如果真得是因为档案最后的内容不足1024。因此出现乱码
那想请问该如何才能知道最后还剩多少内容还没读取?
以便让我修改缓冲区的大小
或者说我这实做方法根本就是错误的,谢谢。
另外就是虽然C++的list跟JAVA的linkedList内部实作上也许不太一样
但原理应该是大同小异(我猜的)
不晓得为什么同样都是push_back相同的数量
但c++的list却比java慢很多@@
例如说我塞一千个string进去,C++要0.6秒,JAVA却只要0.009秒
整个速度有着很大的差距@@
想请问说是有什么关键的东西是我没注意到的吗?
感谢各位