在 Python 中,如果我的理解正确,答案是“视情况而定”。 (我使用 python 是为了方便,你说“任何现代语言”)
我创建了一个创建字母字符数组的函数,以及另一个创建字母字符串的函数。然后每个运行 100 万次。
字符数组大约需要 1.7 秒,而字符串数组需要 0.5 秒。
“也许这是一个开销的事情?”你可能会问。
很好:我对它们进行了全局初始化,然后通过循环(100 万次)对每一个进行迭代,将一些变量设置为当前字母。
字符数组需要 7.7 秒,而字符串需要 9 秒。
“如果您正在寻找特定元素怎么办?”
我遍历每个变量以查看“z”是否在元素中。 char 数组耗时 1.8 秒,而字符串耗时 0.4 秒。
“这很有趣,也许这只是一个作业?”
我的最后一个测试是在不分配任何内容的情况下进行迭代。
同样,char 数组的速度更快,为 3.9 秒,而字符串迭代为 5.3 秒。
所以看起来字符串对于初始创建和搜索更快(我也假设排序,但我不打算编写排序函数来找出答案),而字符数组对于迭代事件更快(对于数组中的每个/字符串)。
希望这会有所帮助。
PS - 我的第一个测试类的代码:
#!/usr/bin/env python
import dis
import time
def char_func():
my_c_var = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
#print my_c_var
def stri_func():
my_s_var = "abcdefghijklmnopqrstuvwxyz"
#print my_s_var
start_time = time.time()
for i in range(1000000):
char_func()
print("--- %s seconds ---" % (time.time() - start_time))
start_time = time.time()
for i in range(1000000):
stri_func()
print("--- %s seconds ---" % (time.time() - start_time))