我正在开发一个项目,该项目将针对Windows和Linux,32位和64位进行构建。 该项目基于为文本文件加载字符串,处理它并将结果写入SQLite3数据库。
在Linux上,它每秒达到近400k序列,由GCC编译而没有任何优化。然而,在Windows上,它每秒卡在100k序列中,在VS2010上编译而没有任何优化。
我尝试在编译器中使用优化,但没有任何改变。
这是对的吗? Windows上的C代码运行速度较慢?
编辑:
我认为我需要在某些方面更清楚。 我通过启用和禁用代码优化来进行测试。性能没有改变,可能是因为我的程序的瓶颈是浪费时间从HD读取数据。
该程序可以利用并行计算。有一个队列,其中一个线程将处理过的数据排队,另一个队列出现在SQLite数据库中。这样我认为没有任何性能损失。
答案 0 :(得分:2)
这是对的吗? Windows上的C代码运行速度较慢?
没有。 C没有速度。这是引入速度的C的实现。有些实现会产生快速行为(通常是“生成快速机器代码的编译器”)以及为Windows和Linux产生慢行为的实现。
这里不仅仅是Windows和Linux。一些编译器针对特定处理器进行优化,并为任何其他处理器生成慢速机器代码。
我尝试在编译器中使用优化,但没有任何改变。
没有启用优化的测试速度毫无意义。但是,这确实表明别的东西很慢。也许在Windows中为SQLite3客户端生成库文件的实现是一个生成慢代码的实现。我首先重建该批次(包括SQLite3库)并启用完全优化。接下来,您可以尝试使用分析器来确定差异的位置,并使用结果对代码执行智能优化。