2013-06-23 50 views
2

我正在做批處理程序,然後用BAT編譯成EXE轉換器。 如果我正在製作程序像如何強制RAM編程?

@echo off 
set Line=0 
:Start 
set /a Line=%Line% + 1 
echo %Line% 
goto :Start 

我看到每次,以前的號碼+1。

這很快,但我仍然可以按照順序。

我知道計算機速度要快上千倍,因爲他們必須爲計算機本身計算更多。

是否有可能強制程序的額外性能?保留內存或類似的東西?

+3

它不會有任何區別。執行時間的99.9%用於echo命令。寫入控制檯非常慢。當你使用編譯的代碼時速度並沒有變得更快。控制檯速度慢,這是爲人類的眼睛。通過只寫入控制檯,例如每1000次就可以加快速度。 –

回答

1

通過使用真正的編程語言,您可以使其快一百萬倍。

批處理中,您實際上正在執行純文本命令,這些純文本命令由命令解釋程序單獨解析並執行。這從來沒有爲速度而優化。批處理文件轉換器只不過是將一個批處理文件的代碼包裝起來,並將其提供給命令解釋器,所以它不會比常規的批處理文件執行任何(或至少不會更快)。

額外的RAM並不意味着額外的表現。如果您的應用程序內存不足以容納所有數據,額外的RAM只會爲您提供額外的性能。如果發生這種情況,應用程序內存的一部分會交換到磁盤,從而導致額外的性能下降。 但是,無論如何,你無法對批量進行批量處理。

許多編程語言都有編譯器,它們可以將代碼轉換爲實際的機器指令,或者至少指示高度優化的虛擬機(如.NET或JVM)的指令。即使像PHP這樣的腳本語言也經過高度優化,因爲它們需要能夠在很短的時間內執行大量的代碼。 對於批次,情況並非如此。你只是錯過了批處理的目的,它重複了很多命令行指令,因爲你不想每次都鍵入它們。 ;-)

+0

我只知道這種語言的批處理。這真的沒有解決辦法嗎? –

+0

恐怕不是,儘管放緩的一部分是顯示數字。屏幕IO總是相當廣泛。如果您每10次迭代只顯示一次數字,您可能會注意到它的運行速度更快。但是,再一次,你也改變了程序的輸出,這並不總是一種選擇。 雖然Batch很棒(我甚至曾經寫過一個遊戲),但現在可能是時候轉移到其他東西了。 :) – GolezTrol

+0

是否有任何「編程」語言作爲批處理?這可以編譯並從任何計算機輕鬆啓動。 –

3

代碼,你可以測試:

@echo off & SETLOCAL 
for /l %%i in (0) do <nul set/p=. 

@echo off & SETLOCAL 
:loop 
SET /a var+=1 
ECHO %var% 
goto:loop 
+0

第一個代碼結果點...我嘗試將更改代碼設置爲 '(for/l %% i in(0)do

相關問題