以下代码片段中哪一个是最佳实践、最佳(CPU 利用率)、安全、可读:
{
char buffer[10];
ssize_t bytes = read(0, buffer, 9);
if(bytes > 0)
{
buffer[bytes] = '\0';
}
else
{
// return, break, continue
}
// more business logic
}
或
{
char buffer[10] = {};
ssize_t bytes = read(0, buffer, 9);
if(bytes <= 0)
{
// return, break, continue
}
// more business logic
}
在哪种架构中这些是首选或不鼓励的。
为了比较,我们
g++ -S -fverbose-asm
和 as -alhnd
。
这可以帮助比较汇编代码以获得最佳代码选择。
我会尽快添加它的结果。
这确实是一个太早的微观优化问题。这里可读性比效率更重要,恕我直言,第一个版本的意图更明确:读取一堆字符并以 null 终止它。
此外,缓冲区的零初始化需要写入每个字节。这不是一项非常繁重的任务,因为它可能发生在非常低的级别,但可能比写入一个字节稍微重一些。