【发布时间】:2014-09-19 08:11:40
【问题描述】:
我不关心 NULL 终止符,所以我有两个选择:
strcpy(createTabStmt, "CREATE TABLE "); //shorter and more readable code
或者
memcpy(createTabStmt, "CREATE TABLE ", sizeof ("CREATE TABLE ") - 1); //faster?
memcpy 版本总是更快吗?
--
如果是这样,那么我认为宏可以使可读性与strcpy一样好:
#define MEMCPY_LITERAL(ptr,literal) memcpy(ptr, literal, sizeof (literal) - 1)
--
我认为memcpy 版本还有一个常量sizeof ("CREATE TABLE ") - 1。所以它使用更多的空间。这是真的吗?
【问题讨论】:
-
这是你程序的瓶颈吗?如果没有,您担心的是性能差异可以忽略不计,而没有真正的收益。过早的优化是一件坏事。过早的微优化是可怕的。
-
sizeof ("CREATE TABLE ")的评估结果是什么? -
它们不相等。
strcpy形式多写一个字节。我不确定你是否关心,但如果不关心,你为什么要麻烦在第二个版本中减去一个? -
@DavidHeffernan:对象的大小:14。