【发布时间】:2013-09-18 10:46:00
【问题描述】:
我正在用 C 语言编写 pthread 代码,并使用 gcc 编译器。我已经用 pthread_condition、互斥锁和信号量实现了一个代码。gcc 中是否有任何标志或选项来提高执行时间?
编写程序来解决这个问题Problem
【问题讨论】:
-
谁能回复我??为什么要对这个问题投反对票?
标签: c multithreading gcc pthreads
我正在用 C 语言编写 pthread 代码,并使用 gcc 编译器。我已经用 pthread_condition、互斥锁和信号量实现了一个代码。gcc 中是否有任何标志或选项来提高执行时间?
编写程序来解决这个问题Problem
【问题讨论】:
标签: c multithreading gcc pthreads
gcc 联机帮助页显示:
-O
-O1 Optimize.
Optimizing compilation takes somewhat more time, and a lot more
memory for a large function. With -O, the compiler tries to reduce
code size and execution time, without performing any optimizations
that take a great deal of compilation time.
-O2 Optimize even more.
GCC performs nearly all supported optimizations that do not involve a
space-speed tradeoff. As compared to -O, this option increases both
compilation time and the performance of the generated code.
-O3 Optimize yet more.
-O3 turns on all optimizations specified by -O2 and also turns on the
-finline-functions, -funswitch-loops, -fpredictive-commoning,
-fgcse-after-reload, -ftree-vectorize and -fipa-cp-clone options.
因此,如果您希望代码运行得更快(“最小化执行时间”),一个好的开始是使用-O3。
由于优化将是通用的,因此您必须进行大量基准测试才能获得给定代码的最佳结果。
【讨论】:
-pthread 来编译和链接多线程程序,但没有单独的优化选项。慢速多线程应用程序通常是由于选择不当的同步和缓存效果(例如错误共享)而不是由于编译器优化
-lpthread 和-pthread 之间的区别。延伸阅读:stackoverflow.com/q/2127797/694576