繁体   English   中英

在c#中使用字符数组(char [])而不是字符串

[英]Using of Array of chars (char[]) instead of strings in c#

C语言中没有字符串这样的概念,对吧? 所以,我想知道:在现代语言中使用字符数组而不是字符串可以节省任何内存优势,例如C#。

在Python中,如果我正确理解你,答案是“它取决于”。 (我在方便时使用python,你说“任何现代语言”)

我创建了一个创建字母表字符数组的函数,另一个函数创建了一个字母表字符串。 然后每100万次运行它们。

与字符串数组的.5秒相比,字符数组花了大约1.7秒。

“也许这是一件令人头疼的事情?” 你可能会问。
好的:我在全局初始化它们,然后通过循环(100万次)运行每个迭代,将一些变量设置为当前字母。
字符数组为7.7秒,字符串为9秒。

“如果你正在寻找一个特定元素怎么办?”
我浏览了每个变量,看看'z'是否在元素中。 char数组花了1.8秒对弦0.4秒。

“那很有意思,也许这只是一个任务?”
我的最后一个测试是在没有分配任何东西的情况下迭代。 同样,char数组比3.9秒的字符串迭代速度快3.9秒。

所以看起来Strings在初始创建和搜索方面更快(我也假设排序,但我不打算编写排序函数来查找),而字符数组对于迭代事件更快(对于数组/字符串中的每一个) 。

希望这可以帮助。
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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM