1

我正在开发一个项目,该项目将为 Windows 和 Linux、32 位和 64 位构建。该项目基于为文本文件加载字符串,对其进行处理并将结果写入 SQLite3 数据库。

在 linux 上,它达到了每秒近 400k 的序列,由 GCC 编译而没有任何优化。但是在 Windows 上,它停留在每秒 100k 个序列,在 VS2010 上编译而没有任何优化。

我尝试在编译器中使用优化,但没有任何改变。

这是正确的吗?Windows 上的 C 代码运行速度较慢?

编辑:

我认为我需要在某些方面更加清楚。我在启用和禁用代码优化的情况下进行了测试。性能没有改变,可能是因为我的程序的瓶颈是浪费时间从 HD 读取数据。

该程序利用并行计算的优势。有一个队列,一个线程将处理过的数据排队,另一个出队写入 SQLite 数据库。这样我不认为有任何性能损失。

4

1 回答 1

2

这是正确的吗?Windows 上的 C 代码运行速度较慢?

不,C 没有速度。引入速度的是 C 的实现。有一些实现会产生快速行为(通常是“产生快速机器代码的编译器”)和产生对 Windows 和 Linux 的缓慢行为的实现。

在这里重要的不仅仅是 Windows 和 Linux。一些编译器针对特定处理器进行了优化,并且会为任何其他处理器生成慢速机器代码。

我尝试在编译器中使用优化,但没有任何改变。

未启用优化的测试速度毫无意义。但是,这确实往往表明其他东西很慢。也许在 Windows 中为 SQLite3 客户端生成库文件的实现是产生慢代码的实现。我将首先重建启用了完全优化的批次(包括 SQLite3 库) 。之后,您可以尝试使用分析器来确定差异在哪里,并使用结果对您的代码执行智能优化。

于 2013-06-02T14:59:12.727 回答