通过从字符串IIN C 中删除垃圾字符来优化大小
Optimization for size through removing garbage characters from strings iin C++
我有两个版本的Hello World程序:
#include <iostream>
int main() {
std::cout<<"Hello World";
}
和
#include <iostream>
int main() {
std::cout<<"Hello World and a very long message";
}
如果执行严格的尺寸优化,我希望这些尺寸不同。但是,当我使用g++ -Os -o test test.cpp -Wl,--strip-all
(用GCC 5.4.0
)编译时,我会得到相等的文件大小(在系统上的6336,即Ubuntu
)。这意味着有一些垃圾空间可容纳一些尺寸最小的缓冲区(尽管在此示例中,我希望字符串为const char[]
)。
我的问题:此缓冲区的性质是什么以及如何从生成的二进制中删除垃圾字符?
在这里进行对齐。
链接器默认情况下将事物与页面大小(4K)对齐。请参阅下面的参考:
如何在GNU中指定ELF部分对齐为?
如何更改ELF
中代码段的对齐还有代码对齐(指令对齐)极大地影响性能,但这与字符串文字无关,因此我将在此处省略。
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 空基优化子对象的地址
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 关闭||运算符优化
- 比较字符数组
- C++ C 样式字符串/字符数组的大小 - 优化
- 添加字符时,编译器会停止优化未使用的字符串
- 短(ASCII,每个字符 7 位)字符串存储和C++中的比较优化
- 通过从字符串IIN C 中删除垃圾字符来优化大小
- 优化C++中的字符数组成员交换
- 使用循环替换字符串中的字符(需要帮助优化)