p2p网站 开发百度关键词指数工具

张小明 2026/1/10 17:43:02
p2p网站 开发,百度关键词指数工具,wordpress 邮件设置,网站建设费用选网络专业文章目录gcc的-O优化等级和编译后程序占用空间的关系概述笔记-O0-O1-O2-O3-Os-Ofast-Og-Oz不同优化等级下编译后的size比较不指定-O开关-O-O0-O1-O2-O3-Os-Ofast-Og-Oz整理备注ENDgcc的-O优化等级和编译后程序占用空间的关系 概述 在调试固件#xff0c;想看看可以选哪个优化…文章目录gcc的-O优化等级和编译后程序占用空间的关系概述笔记-O0-O1-O2-O3-Os-Ofast-Og-Oz不同优化等级下编译后的size比较不指定-O开关-O-O0-O1-O2-O3-Os-Ofast-Og-Oz整理备注ENDgcc的-O优化等级和编译后程序占用空间的关系概述在调试固件想看看可以选哪个优化等级既不会增加代码体积也不会妨碍单步调试。不关心具体的优化标志只关心大的-O优化等级开关。编译优化标志(-fx)受到编译优化等级开关(-Ox)的控制. 如果一个编译优化标志在makefile中指定了但是优化等级开关没达到(e.g. -O0), 这些指定的优化标志也不会生效。如果不指定优化等级默认的是-O0然后比较一下同一个实际工程用不同的优化等级编译出的代码体积的差别。gcc在线文档url https://gcc.gnu.org/onlinedocs/笔记-O0-O0 Reduce compilationtimeandmakedebugging produce the expected results. This is the default. At , GCC completely disablesmostoptimization passes;they are not run evenifyou explicitlyenablethem on thecommandline, or are listed by as being enabled by default. Many optimizations performed by GCC depend on code analysis or canonicalization passes that are enabled by , and it would not be useful to run individual optimization passesinisolation. -O0-Q --helpoptimizers-O缩短编译时间并确保调试能产生预期的结果。这是默认设置。GCC 完全禁用了大多数优化过程即便您在命令行中明确启用了这些过程它们也不会被执行而且在-O0中也不会被列为默认启用的状态。GCC 执行的许多优化过程都依赖于由-O0启用的代码分析或规范化过程单独运行个别优化过程是毫无意义的。-O1-O -O1 Optimize. Optimizing compilation takes somewhatmoretime, and a lotmorememoryfora large function. With , the compiler tries to reduce code size and execution time, without performing any optimizations that take a great deal of compilation time. -O -O is the recommended optimization levelforlarge machine-generated code as a sensible balance betweentimetaken to compile and memory use: higher optimization levels perform optimizations with greater algorithmic complexity than at.-O-O -O1 是一样的。优化编译会花费稍多的时间对于大型函数来说还会占用大量内存。使用 -o 时编译器会尝试减小代码大小和执行时间但不会执行任何耗费大量编译时间的优化操作。-O1 是推荐用于大型机器生成代码的优化级别它在编译时间和内存使用之间达到了合理的平衡更高的优化级别会执行算法复杂度更高的优化操作。-O2-O2 Optimize even more. GCC performs nearly all supported optimizations thatdonot involve a space-speed tradeoff. As compared to , this option increases both compilationtimeand the performance of the generated code. -O-O2在-O1的基础上进一步优化。GCC 会执行几乎所有不涉及空间与速度权衡的优化操作。与 -O1相比此选项会增加编译时间但提高生成代码的性能。-O3-O3 Optimize yet more. turns on all optimizations specified by and also turns on the following optimization flags: -O3-O2-O3在-O2的基础上进一步优化。-Os-Os Optimizeforsize. enables all optimizations except those that often increase code size: -Os-O2 -falign-functions -falign-jumps -falign-labels -falign-loops -fprefetch-loop-arrays -freorder-blocks-algorithmstc It also enables , causes the compiler to tuneforcode size rather than execution speed, and performs further optimizations designed to reduce code size. -finline-functions-Os在-O2的基础上进一步优化。优化以减小代码大小。启用除那些通常会增加代码大小的优化之外的所有优化-对函数进行对齐-对跳转进行对齐-对标签进行对齐-对循环进行对齐-预取循环数组-采用 stc 算法重新排列代码块, 它还使编译器能够针对代码大小而非执行速度进行优化并执行进一步的优化以减少代码大小。-内联函数优化-Ofast-Ofast Disregard strict standards compliance. enables all optimizations. It also enables optimizations that are not validforall standard-compliant programs. It turns on , and the Fortran-specific , unless is specified, and.It turns off.-Ofast-O3-ffast-math-fallow-store-data-races-fstack-arrays-fmax-stack-var-size-fno-protect-parens-fsemantic-interposition-Ofast开启了所有的优化选项这可能会引起问题。忽略严格的标准。这能使所有优化生效。它还能使那些并非适用于所有符合标准的程序的优化生效。-Og-Og Optimize debugging experience. should be the optimization level of choiceforthe standard edit-compile-debug cycle, offering a reasonable level of optimizationwhilemaintaining fast compilation and a good debugging experience. It is a better choice thanforproducing debuggable code because some compiler passes that collect debug information are disabled at.-Og-O0-O0 Like , completely disables a number of optimization passes so that individual options controlling them have no effect. Otherwise enables all optimization flags exceptforthose that may interfere with debugging: -O0-Og-Og-O1优化调试体验。应作为标准的编辑-编译-调试循环的优化级别首选项既能提供合理的优化程度又能保证快速编译和良好的调试体验。与生成可调试代码相比这是一个更好的选择会排除干扰调试操作的优化。-Oz-Oz Optimize aggressivelyforsize rather than speed. This may increase the number of instructions executedifthose instructions require fewer bytes to encode. behaves similarly to including enablingmostoptimizations. -Oz-Os-O2 If you use multiple options, with or without level numbers, the last such option is the one that is effective. -O Options of the form specify machine-independent flags. Most flags have both positive and negative forms;the negative form of is.In the table below, only one of the forms is listed—the one you typically use. You can figure out the other form by either removing ‘’ or adding it. -fflag-ffoo-fno-foono- The following options control specific optimizations. They are either activated by options or are related to ones that are. You can use the following flagsinthe rare cases when “fine-tuning” of optimizations to be performed is desired. -O-Oz在-Os -O2的基础上进一步优化优先考虑优化代码的大小而非速度。这样做可能会增加执行的指令数量因为这些指令所需的编码字节数较少。其效果类似于启用大多数优化选项。不同优化等级下编译后的size比较就拿同一个开源工程中的一个提交为测试对象(e.g. bootloader工程的初始提交), 预留的编译后的目标size空间为16kb因为程序空间用的差不多了-O0编译后装不下将.ld改一下改为预留最大的MCU代码空间。编译时都是先clean, 再build为了验证是否同一个配置每次编译的rom-size, ram-size, build-time都一致编译2次进行参考。应该同一个配置每次编译出的rom-size, rame-size都是相同的build-time可能稍有差别。不指定-O开关[1;4m SIZE LPC1769(bootloader)[0m FLASH24540bytes5% of 512kb150% of 16kb RAM3248bytes20% of 16kb14:04:53 Build Finished.0errors,14warnings.(took 10s.208ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH24540bytes5% of 512kb150% of 16kb RAM3248bytes20% of 16kb14:20:15 Build Finished.0errors,14warnings.(took 10s.63ms)-O[1;4m SIZE LPC1769(bootloader)[0m FLASH14120bytes3% of 512kb87% of 16kb RAM3248bytes20% of 16kb14:06:35 Build Finished.0errors,14warnings.(took 11s.232ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH14120bytes3% of 512kb87% of 16kb RAM3248bytes20% of 16kb14:29:29 Build Finished.0errors,14warnings.(took 11s.137ms)-O0[1;4m SIZE LPC1769(bootloader)[0m FLASH24540bytes5% of 512kb150% of 16kb RAM3248bytes20% of 16kb14:11:23 Build Finished.0errors,14warnings.(took 10s.175ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH24540bytes5% of 512kb150% of 16kb RAM3248bytes20% of 16kb14:30:25 Build Finished.0errors,14warnings.(took 10s.255ms)-O1[1;4m SIZE LPC1769(bootloader)[0m FLASH14120bytes3% of 512kb87% of 16kb RAM3248bytes20% of 16kb14:12:32 Build Finished.0errors,14warnings.(took 11s.180ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH14120bytes3% of 512kb87% of 16kb RAM3248bytes20% of 16kb14:31:22 Build Finished.0errors,14warnings.(took 11s.278ms)-O2[1;4m SIZE LPC1769(bootloader)[0m FLASH13348bytes3% of 512kb82% of 16kb RAM3248bytes20% of 16kb14:13:14 Build Finished.0errors,19warnings.(took 12s.143ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH13348bytes3% of 512kb82% of 16kb RAM3248bytes20% of 16kb14:32:15 Build Finished.0errors,19warnings.(took 11s.992ms)-O3[1;4m SIZE LPC1769(bootloader)[0m FLASH16428bytes4% of 512kb101% of 16kb RAM3248bytes20% of 16kb14:13:56 Build Finished.0errors,20warnings.(took 13s.309ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH16428bytes4% of 512kb101% of 16kb RAM3248bytes20% of 16kb14:33:08 Build Finished.0errors,20warnings.(took 13s.348ms)-Os[1;4m SIZE LPC1769(bootloader)[0m FLASH12308bytes3% of 512kb76% of 16kb RAM3248bytes20% of 16kb14:14:57 Build Finished.0errors,15warnings.(took 11s.581ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH12308bytes3% of 512kb76% of 16kb RAM3248bytes20% of 16kb14:33:51 Build Finished.0errors,15warnings.(took 11s.532ms)-Ofast[1;4m SIZE LPC1769(bootloader)[0m FLASH16428bytes4% of 512kb101% of 16kb RAM3248bytes20% of 16kb14:15:47 Build Finished.0errors,20warnings.(took 13s.511ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH16428bytes4% of 512kb101% of 16kb RAM3248bytes20% of 16kb14:34:44 Build Finished.0errors,20warnings.(took 13s.412ms)-Og[1;4m SIZE LPC1769(bootloader)[0m FLASH14188bytes3% of 512kb87% of 16kb RAM3248bytes20% of 16kb14:16:43 Build Finished.0errors,16warnings.(took 10s.719ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH14188bytes3% of 512kb87% of 16kb RAM3248bytes20% of 16kb14:35:43 Build Finished.0errors,16warnings.(took 10s.875ms)-Oz[1;4m SIZE LPC1769(bootloader)[0m FLASH12308bytes3% of 512kb76% of 16kb RAM3248bytes20% of 16kb14:18:05 Build Finished.0errors,15warnings.(took 11s.632ms)[1;4m SIZE LPC1769(bootloader)[0m FLASH12308bytes3% of 512kb76% of 16kb RAM3248bytes20% of 16kb14:36:40 Build Finished.0errors,15warnings.(took 11s.735ms)通过多次编译一个配置的工程可知编译出来的东西是确定的编译时间稍有差别。整理优化等级程序输出占用的size(byte)RAM输出占用的size(byte)编译时间不指定-O开关24540324810s.208ms-O024540324810s.175ms-Ofast16428324813s.511ms-O316428324813s.309ms-Og14188324810s.719ms-O14120324811s.232ms-O114120324811s.180ms-O213348324812s.143ms-Os12308324811s.581ms-Oz12308324811s.632ms从以上统计数据可知:RAM总是没有优化如果想减少RAM的用量那么程序中数据结构用的变量要减少才行。RAM的优化和代码编译开关没关系。对于不同的编译开关编译时间是有不同但是我们中的大多数人都是不关心的。我们其实最关心的是编译出的程序size和程序的稳定性(不会因为编译优化使程序的逻辑出错)对于编译出的程序的size和编译开关的选择可知:不加优化开关时等同于 -O0按照编译开关和编译出的程序占用空间的关系可以看出有些编译开关编译效果是差不多的按照程序占用空间从大到小如下不指定-O开关/ -O0, 代码占用空间最大-Ofast/-O3 次之-Og 次之-O/-O1 次之-O2 次之-Os/-Oz 代码占用空间最小备注并不是优化等级越高编译后程序的占用空间越小。根据以上实验结果可以看出O3优化比O2优化占用的程序空间还多。如果是调试程序启用-Og, 调试感觉是最好的(是有优化的代码占用空间在O2和O3之间但是一点不影响单步调试)在每一句代码处都能单步每一个变量都能观察到。如果在-Og下编译出的程序占用空间装不下了那可能说明需求/实现 不合理/可以优化/应该重新评估。如果需求不能改, 实现逻辑也没有太多可优化的地方就只能用-Os/-Oz来优化但是单步调试受影响(单步时可能下一步就跳过了很多代码行).END
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

x网站免费模板网站开发工具 n

HTML表格元素的现代用法:table、thead、tbody、caption等深度解析 在HTML5规范中,表格元素通过语义化标签的组合实现了数据展示与结构化的完美平衡。从基础表格构建到复杂数据可视化,现代Web开发对表格元素的应用已突破传统布局限制&#xff…

张小明 2025/12/29 4:17:08 网站建设

万网网站多少今天最新的新闻头条新闻

东华测试软件操作指南:从入门到精通的完整解决方案 【免费下载链接】东华测试软件说明书Word版分享 本仓库提供了一份详细的东华测试软件说明书,以Word文档的形式供用户下载。该说明书旨在帮助用户更好地理解和使用东华测试软件,确保用户能够…

张小明 2025/12/29 6:50:33 网站建设

浙江网站建设企业网站怎么建设的

番茄小说下载器使用全攻略:从入门到精通 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 番茄小说下载器是一款功能强大的开源工具,专门用于从番茄小说平台批量下载和…

张小明 2026/1/3 2:48:52 网站建设

网站建设课程改进建议海曙网站设计建设

终极炉石传说脚本使用指南:快速掌握自动化操作的完整教程 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mirrors/he/Hearths…

张小明 2025/12/28 0:57:35 网站建设

网络营销课程学什么江苏泰州seo网络优化推广

项目管理中的计划发布与进度跟踪 1. 项目计划发布到项目服务器 为了让其他利益相关者(如项目计划中有任务分配的资源人员)能够查看项目计划,项目经理必须将项目计划发布到项目服务器。一旦项目计划发布到项目服务器,其名称会追加 .Published ,这是项目计划的一个特定版…

张小明 2026/1/5 18:00:20 网站建设

网站服务器租用需要注意的点昆明网站推广

在当代电子科技的浪潮中,电子设备对低功耗、高兼容性的追求愈发强烈。D6212马达驱动芯片以其卓越的低电压输入兼容性,精准地契合了这一核心需求,成为众多电子设备制造商的理想选择。 l 低电压输入:突破能耗瓶颈 D6212芯片支持低…

张小明 2026/1/6 5:10:27 网站建设