我正在为Windows和Linux构建一个32位和64位的项目。此项目基于为文本文件加载字符串、处理文本文件并将结果写入SQLite3数据库。
在linux上,它达到每秒近400 k的序列,由GCC编译,没有任何优化。然而,在Windows上,它以每秒100 k的顺序运行,在VS2010上编译,没有进行任何优化。
我尝试在编译器中使用优化,但是没有什么改变。
是这样的吗?Windows上的C代码运行速度慢吗?
编辑:
我想我需要在一些问题上讲得更清楚。我在启用和禁用代码优化的情况下进行了测试。性能没有改变,可能是因为我的程序瓶颈是浪费了从HD读取数据的时间。
这个程序利用了并行计算的优点。有一个队列,其中线程队列处理数据,另一个去队列写入SQLite数据库。这样的话,我不认为会有任何性能损失。
发布于 2013-06-02 14:59:12
是这样的吗?Windows上的C代码运行速度慢吗?
不是的。C没有速度。是C的实现引入了速度。有些实现可以产生快速行为(通常是“生成快速机器代码的编译器”),还有一些实现会为Windows和Linux产生缓慢行为。
这里也不仅仅是Windows和Linux。一些编译器对特定处理器进行优化,并将为任何其他处理器生成缓慢的机器代码。
我尝试在编译器中使用优化,但是没有什么改变。
在没有启用优化的情况下测试速度是没有意义的。然而,这确实表明其他的事情是缓慢的。在Windows中为SQLite3客户端生成库文件的实现可能是生成缓慢代码的实现。首先,我将在启用完全优化的情况下重新构建这个批量(包括SQLite3库)。在此之后,您可以尝试使用分析器来确定差异所在,并使用结果对代码执行智能优化。
https://stackoverflow.com/questions/16878301
复制相似问题