簡體   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