wro*_*ame 11 c++ size binaries
为什么编译C++程序时生成的二进制文件如此之大(如同源代码文件大小的10倍)?与不需要这种编译的解释语言相比,它提供了哪些优势(因此程序大小只是代码文件的大小)?
现代解释语言通常会将代码编译为某种表示形式,以便更快地执行...它可能无法写入磁盘,但肯定无法保证程序以更紧凑的形式表示.有些解释器会全力以赴并生成机器代码(例如Java JIT).然后是解释器本身就位于内存中,这可能很大.
几点:
printf()
语句或类似的东西,而对于输出格式化C++有ostream
- 一个更复杂,可扩展和类型安全的系统,具有(更好或更坏)跨函数调用的持久状态,查询和设置的例程该状态,可定制的缓冲,可自定义的字符类型和本地化的附加层,以及通常许多小内联函数,可以根据确切的用途和编译器设置导致更小或更大的程序.什么是最好的取决于您的应用程序和内存与性能目标.switch
整数表达式,并且有100个案例标签随机分布在1到1000之间:一个编译器/语言可能决定"打包"100个案例并进行二进制搜索以匹配,另一个使用一个稀疏填充的1000个元素的数组,并进行直接索引(这会浪费可执行文件中的空间,但通常会使代码更快).因此,很难根据可执行文件大小得出结论.通常,随着程序变得越来越大和越来越复杂,内存使用和执行速度变得越来越重要.您没有看到以解释语言编写的操作系统,企业Web服务器或全功能商用文字处理器等系统,因为它们没有可扩展性.