Go-Ethereum

如何在線上solidity編譯器中測量函式執行時間

  • January 16, 2020

我正在使用線上 Solidity 編譯器,並希望通過擷取函式開始和結束的時間來測量執行函式的 CPU 時間。

我找到了 Javascript 的範例,但是在嘗試時編譯器無法辨識“var”

var start = new Date().getTime();
var amount = 1;
var sender = personal.listAccounts[0]
var receiver = personal.listAccounts[0]
for (i = 0; i < 5000; ++i) {
  eth.sendTransaction({from:sender, to:receiver, value: amount});
}
var end = new Date().getTime();
var time = end - start;
console.log('Execution time: ' + time);

如何在這裡實現?

你無法辨識 var 因為solidity 不要使用它。Solidity 還有其他類型用於儲存變數,這是一個 Solidity 編譯器而不是 javascript 編譯器。

要了解 Solidity 中的類型,請轉到此處

對於這裡的結構。

該程式碼不是 Solidity,因此無法使用 Solidity 編譯器進行編譯。

如果您編譯合約並將其送出到區塊鏈,您就可以呼叫其中定義的方法。

您無法計算函式執行所需的時間。至少不准確。函式執行取決於正在探勘的執行事務。例如,如果您設置更高的 gas 價格,交易將被更快地探勘。

你可以通過辨別交易送出的時間和包含交易的區塊被探勘的時間來估計時間,但我不確定這會有什麼用處。

引用自:https://ethereum.stackexchange.com/questions/23134