首页 > 解决方案 > 内存使用量与数据大小相同吗?

问题描述

我正在对变量进行 SHA3 算法的性能测试,我正在检查不同大小的变量的算法执行时间。为此,我正在使用 char 类型并增加它的大小,但我不知道我是否有效地正确执行了它。我将使用下面的代码行来解释我的疑问。

char[1000] = "A text";

我知道每个字符的大小为 1 字节。我的问题是:当我预定义一个向量时,变量的大小是否会成为向量的索引,在本例中为 1000?或者变量的大小将由其中的内容给出,在这种情况下由文本给出,即 6 字节?

我做的测试对吗?或者分配的内存大小不考虑SHA3的性能?(我问这个是因为我打算用更大的值做同样的测试。例如,如果我想用 20 KB 做这个测试,我是否必须用 20000 个字符填充变量?)

我正在使用 C++。

标签: c++

解决方案


该行代码在堆栈上分配的内存量将是 1,000 字节。但是,您发送到 SHA3 代码的内容可能只是字符串“A text”的字节数,具体取决于您如何调用它,以及它如何使用数据。如果它使用类似的函数计算字符串的长度strlen(),那么它可能只会遍历字符串的 6 个字符(和 1 个 NUL 字节)并忽略剩余的 993 个字节。因此,这实际上取决于您如何使用它以及如何计算测试的大小。


推荐阅读