linux与windows频繁打开和关闭文件性能差很远吗?
我平时在linux环境上做开发时很习惯封装类似如下的文件追加函数,而且性能很高。
int appendfike(...)
{
fopen...
fwrite...
fclose...
...
}
按上面代码移植到vc6或vc2008时发现性能好低呀,追加上万条记录就感觉到很慢了。
但是我改成只打开一次,而写N条记录这样性能却很高。
请问是文件系统不同的原因造成的吗?还是其它原因呀?
[解决办法]
没错,windows为了通用性和可靠性做了许多的妥协(这就是为什么Windows不挑机器,任何PC运行效果都差不多,Linux却对机器挑三拣四,不光是驱动的问题),而且架构的不同导致看上去类似的东西windows的调用层数会更深,做的事情会更多
另一个典型例子就是有人喜欢拿linux的fork和windows的CreateProcess作比较得出linux创建进程比windows快几十倍的结论……去看看Windows Internals,CreateProcess做了多少事情,别说fork了,fork+exec都没CreateProcess做的事多
[解决办法]
你这封装的也太烂了,写一次打开关闭一次?敢不敢把FILE打开就留下来重复用?
[解决办法]
这个和_commit有关
你如果了解GCC不同平台的实现就知道了
Linux都没这个
[解决办法]