打印一系列数字优化第 2 部分 [关闭]

Posted

技术标签:

【中文标题】打印一系列数字优化第 2 部分 [关闭]【英文标题】:print a series of numbers optimization part 2 [closed] 【发布时间】:2011-05-03 01:13:18 【问题描述】:

早些时候我发布了第 1 部分并得到了一些有趣的回应

print a series of numbers optimization part 1

这是另一种方法,您可以让程序在屏幕上打印一系列重复的数字,这里的目标是制作最有效/最快的算法

int series[] = [2,3,4,5,6,7,8,9,1]
int i = 9;

while(true)

    print(series[i])
    i = series[i] - 1;
 

当然忽略实际打印数字所产生的任何额外开销,因为这不是问题的目的

无论你做什么解决方案,都需要一个布尔条件语句(当为真),所以你也可以忽略它

此解决方案为 11 个 int 变量使用内存,但除此之外,它仅执行一次简单计算和每次迭代的一次变量分配。

那么这是解决无限数序列问题最省时的方法吗?

【问题讨论】:

print a series of numbers optimization part 1的可能重复 @John 这显然是一个后续问题...... 它会造成一些令人讨厌的溢出,因为数组有 9 个元素长,并且您指的是位置 9 的索引,而实际上最后一个位于位置 8。 这些愚蠢的问题有什么意义?我可以想到一百万个微不足道的问题,并询问如何对同样微不足道的解决方案进行微优化。 微优化此代码毫无意义。大部分时间将花费在 I/O 上,以便将这些内容输出到屏幕上。 【参考方案1】:

我会说这不是最有效的方法。

在寻址数组时涉及乘法。本质上是

destinationAddress = baseAddressOfArray + indexRequested * sizeof(elementOfArray)

我认为最有效的方法是缓存一次迭代的字符串,然后一遍又一遍地吐出该字符串。我不了解我的确切 C++ 语法,可能是这样的

string s = "123456789";
while(true) 
    print(s);

【讨论】:

我认为这不是 OP 的意思。 @Dani 说实话,很难准确说出 OP 的意思。

以上是关于打印一系列数字优化第 2 部分 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

第19天SQL进阶-查询优化- performance_schema系列一:了解performance_schema(SQL 小虚竹)

第19天SQL进阶-查询优化- performance_schema系列一:了解performance_schema(SQL 小虚竹)

第19天SQL进阶-查询优化- performance_schema系列一:了解performance_schema(SQL 小虚竹)

C++应用程序性能优化

Emscripten教程之优化你的代码

优化 C 代码 [关闭]