變數命名長的程序會不會比變數命名短的程序運行速度慢一些?
01-06
當然也包括常量名、方法名、函數名等所有標識符。
我因為這個問題搞不懂,所以寫代碼的時候,一直不敢把標識符的名字起得過長。
寫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男敲代碼用的鍵盤。什麼都不懂但想送他鍵盤?
※如何實施代碼重構?
※作為程序員你寫過的最漂亮的代碼是什麼?
※寫作和編程的關係?能否認為編程是寫作的一種?