我有一个严重受网络I / O约束的C应用程序。它目前在gcc上使用-O2
进行编译。使用-Os
节目构建应用程序可以减少20%的大小。一些基本测试显示性能没有可测量的降低(或增加)。
这是使用-Os
进行构建的好例子吗?有没有理由不这样做?我从来没有真正看到过编译过程的程序,无论它在I / O上花费多少时间。
答案 0 :(得分:4)
优化不应影响程序的运行。因此,任何类型的优化都不应影响程序使用的网络I \ O以及其他任何内容。如果您的程序发送10千字节,即使在优化后它也会发送相同的内容。
优化可能会影响structs
在其他方面的对齐方式(如代码大小,内存使用情况等),但根本不会影响逻辑(如果编程正确)。
通常,由于二进制文件往往相对较小(1MB二进制文件非常大),因此优化速度而不是大小更为常见。但是,这取决于你。