變數命名長的程序會不會比變數命名短的程序運行速度慢一些?

當然也包括常量名、方法名、函數名等所有標識符。

我因為這個問題搞不懂,所以寫代碼的時候,一直不敢把標識符的名字起得過長。


寫objective-c的我淚流滿面


特殊情況下有影響

特殊:VC名字超長超複雜而且還導出函數,會增大體積,增加導出函數查找成本,略微有影響。還有在程序中使用了__FUNCTION__宏也


嗯,99.9999..%沒影響吧

差的那一丁點是系統讀取因為變數名變長而多出來的幾KB位元組帶來的開銷


要看具體語言的運行時實現,比如python中存取全局變數是以變數名為key在一個hash表中,這樣看上去每次成功查找都有一次變數名的字元串比較,會有影響,然而py對此有string intern優化,所以一般也沒影響了


反對曾博。

編譯型運行100%不影響速度……解釋型在我現在的理解上應該也是不影響的,解釋型語言程序編譯後對中間語言的變數名會做修改精簡的吧(印象中,不確定,沒試)。

如果有錯的地方歡迎指正。

.net程序汪


哈哈哈,這個問題好可愛。答案是不會,因為對於機器來說根本不知道變數是個什麼東西,甚至沒有類型的概念。數據要麼存在寄存器里,要麼存在內存里,cpu訪問也只有寄存器名和地址的概念。如果非要死扣,唯一可能會產生影響的是在編譯時構造AST的階段,字元串匹配多花一些時間,不過這個開銷基本可以忽略不記。


既然你有這個擔心,為什麼不先測一測呢?


當然會。

不論是編譯還是解釋語言,首先一步就是要處理語法。

這樣一來第一步就是要找到大括弧或者tab 結束的位置。

假設這個步驟是O(n) (很合理了),你一個長達10000000行的源代碼,編譯或者解釋起來要比10行慢1百萬倍。


程序性能扣到份上了 也是令人髮指,還寫毛代碼啊。


嫌慢上SSD啊。。。

(貌似與題目無關哈。。。)


其實和編譯器/解釋器實現有關。

對於解釋型語言來說,理論上是要慢一些的。然而相比於你真正要執行的計算,這點時間基本可以忽略不計,畢竟你的程序里也不會只執行"a=5"這種語句不是。

另外……這麼簡單的問題題主你倒是自己實驗下啊問個毛


編譯的時候會慢一點點點點,變數名長,詞法分析多消耗點點點點時間去讀它,讀完之後多好點點點點時間用正則表達式去匹配它——原來是個變數名! 同樣換成一個token。同樣在symbol table存個地址。最後,運行時間是不會變的。


學了編譯原理你就知道了。


如果是C語言,彙編,應該是一樣的,變數名,函數名編譯後就是一個地址。


在編譯器眼裡長短變數名有區別?還是不能理解的話,就打個時間戳測試一下。

看到曾博的說法,突然覺得自個說的有漏洞。編譯型運行時無差別


這個就和』以後上清華還是上北大?』一樣,結論就是你想多了。


推薦閱讀:

習慣聽歌寫代碼 有必要買個好耳機嗎?
適合在校it男敲代碼用的鍵盤。什麼都不懂但想送他鍵盤?
如何實施代碼重構?
作為程序員你寫過的最漂亮的代碼是什麼?
寫作和編程的關係?能否認為編程是寫作的一種?

TAG:編程語言 | 編程 | 計算機 | 代碼 | 程序 |