mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Gas tests for the binary search dispatch routine.
This commit is contained in:
parent
7f39c3e522
commit
6124176374
43
test/cmdlineTests/gas_test_dispatch.sol
Normal file
43
test/cmdlineTests/gas_test_dispatch.sol
Normal file
@ -0,0 +1,43 @@
|
||||
pragma solidity >=0.0;
|
||||
|
||||
contract Large {
|
||||
uint public a;
|
||||
uint[] public b;
|
||||
function f1(uint x) public returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function f2(uint x) public returns (uint) { b[uint8(msg.data[1])] = x; }
|
||||
function f3(uint x) public returns (uint) { b[uint8(msg.data[2])] = x; }
|
||||
function f4(uint x) public returns (uint) { b[uint8(msg.data[3])] = x; }
|
||||
function f5(uint x) public returns (uint) { b[uint8(msg.data[4])] = x; }
|
||||
function f6(uint x) public returns (uint) { b[uint8(msg.data[5])] = x; }
|
||||
function f7(uint x) public returns (uint) { b[uint8(msg.data[6])] = x; }
|
||||
function f8(uint x) public returns (uint) { b[uint8(msg.data[7])] = x; }
|
||||
function f9(uint x) public returns (uint) { b[uint8(msg.data[8])] = x; }
|
||||
function f0(uint x) public pure returns (uint) { require(x > 10); }
|
||||
function g1(uint x) public payable returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function g2(uint x) public payable returns (uint) { b[uint8(msg.data[1])] = x; }
|
||||
function g3(uint x) public payable returns (uint) { b[uint8(msg.data[2])] = x; }
|
||||
function g4(uint x) public payable returns (uint) { b[uint8(msg.data[3])] = x; }
|
||||
function g5(uint x) public payable returns (uint) { b[uint8(msg.data[4])] = x; }
|
||||
function g6(uint x) public payable returns (uint) { b[uint8(msg.data[5])] = x; }
|
||||
function g7(uint x) public payable returns (uint) { b[uint8(msg.data[6])] = x; }
|
||||
function g8(uint x) public payable returns (uint) { b[uint8(msg.data[7])] = x; }
|
||||
function g9(uint x) public payable returns (uint) { b[uint8(msg.data[8])] = x; }
|
||||
function g0(uint x) public payable returns (uint) { require(x > 10); }
|
||||
}
|
||||
contract Medium {
|
||||
uint public a;
|
||||
uint[] public b;
|
||||
function f1(uint x) public returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function f2(uint x) public returns (uint) { b[uint8(msg.data[1])] = x; }
|
||||
function f3(uint x) public returns (uint) { b[uint8(msg.data[2])] = x; }
|
||||
function g7(uint x) public payable returns (uint) { b[uint8(msg.data[6])] = x; }
|
||||
function g8(uint x) public payable returns (uint) { b[uint8(msg.data[7])] = x; }
|
||||
function g9(uint x) public payable returns (uint) { b[uint8(msg.data[8])] = x; }
|
||||
function g0(uint x) public payable returns (uint) { require(x > 10); }
|
||||
}
|
||||
contract Small {
|
||||
uint public a;
|
||||
uint[] public b;
|
||||
function f1(uint x) public returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function () external payable {}
|
||||
}
|
1
test/cmdlineTests/gas_test_dispatch.sol.args
Normal file
1
test/cmdlineTests/gas_test_dispatch.sol.args
Normal file
@ -0,0 +1 @@
|
||||
--gas
|
53
test/cmdlineTests/gas_test_dispatch.sol.stdout
Normal file
53
test/cmdlineTests/gas_test_dispatch.sol.stdout
Normal file
@ -0,0 +1,53 @@
|
||||
|
||||
======= gas_test_dispatch.sol:Large =======
|
||||
Gas estimation:
|
||||
construction:
|
||||
1034 + 998400 = 999434
|
||||
external:
|
||||
a(): 456
|
||||
b(uint256): 857
|
||||
f0(uint256): 438
|
||||
f1(uint256): 40781
|
||||
f2(uint256): 20722
|
||||
f3(uint256): 20810
|
||||
f4(uint256): 20788
|
||||
f5(uint256): 20766
|
||||
f6(uint256): 20789
|
||||
f7(uint256): 20701
|
||||
f8(uint256): 20701
|
||||
f9(uint256): 20723
|
||||
g0(uint256): 324
|
||||
g1(uint256): 40736
|
||||
g2(uint256): 20699
|
||||
g3(uint256): 20787
|
||||
g4(uint256): 20765
|
||||
g5(uint256): 20721
|
||||
g6(uint256): 20744
|
||||
g7(uint256): 20743
|
||||
g8(uint256): 20721
|
||||
g9(uint256): 20678
|
||||
|
||||
======= gas_test_dispatch.sol:Medium =======
|
||||
Gas estimation:
|
||||
construction:
|
||||
411 + 376600 = 377011
|
||||
external:
|
||||
a(): 433
|
||||
b(uint256): 857
|
||||
f1(uint256): 40692
|
||||
f2(uint256): 20722
|
||||
f3(uint256): 20766
|
||||
g0(uint256): 324
|
||||
g7(uint256): 20721
|
||||
g8(uint256): 20699
|
||||
g9(uint256): 20655
|
||||
|
||||
======= gas_test_dispatch.sol:Small =======
|
||||
Gas estimation:
|
||||
construction:
|
||||
153 + 107800 = 107953
|
||||
external:
|
||||
fallback: 123
|
||||
a(): 388
|
||||
b(uint256): 813
|
||||
f1(uint256): 40692
|
43
test/cmdlineTests/gas_test_dispatch_optimize.sol
Normal file
43
test/cmdlineTests/gas_test_dispatch_optimize.sol
Normal file
@ -0,0 +1,43 @@
|
||||
pragma solidity >=0.0;
|
||||
|
||||
contract Large {
|
||||
uint public a;
|
||||
uint[] public b;
|
||||
function f1(uint x) public returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function f2(uint x) public returns (uint) { b[uint8(msg.data[1])] = x; }
|
||||
function f3(uint x) public returns (uint) { b[uint8(msg.data[2])] = x; }
|
||||
function f4(uint x) public returns (uint) { b[uint8(msg.data[3])] = x; }
|
||||
function f5(uint x) public returns (uint) { b[uint8(msg.data[4])] = x; }
|
||||
function f6(uint x) public returns (uint) { b[uint8(msg.data[5])] = x; }
|
||||
function f7(uint x) public returns (uint) { b[uint8(msg.data[6])] = x; }
|
||||
function f8(uint x) public returns (uint) { b[uint8(msg.data[7])] = x; }
|
||||
function f9(uint x) public returns (uint) { b[uint8(msg.data[8])] = x; }
|
||||
function f0(uint x) public pure returns (uint) { require(x > 10); }
|
||||
function g1(uint x) public payable returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function g2(uint x) public payable returns (uint) { b[uint8(msg.data[1])] = x; }
|
||||
function g3(uint x) public payable returns (uint) { b[uint8(msg.data[2])] = x; }
|
||||
function g4(uint x) public payable returns (uint) { b[uint8(msg.data[3])] = x; }
|
||||
function g5(uint x) public payable returns (uint) { b[uint8(msg.data[4])] = x; }
|
||||
function g6(uint x) public payable returns (uint) { b[uint8(msg.data[5])] = x; }
|
||||
function g7(uint x) public payable returns (uint) { b[uint8(msg.data[6])] = x; }
|
||||
function g8(uint x) public payable returns (uint) { b[uint8(msg.data[7])] = x; }
|
||||
function g9(uint x) public payable returns (uint) { b[uint8(msg.data[8])] = x; }
|
||||
function g0(uint x) public payable returns (uint) { require(x > 10); }
|
||||
}
|
||||
contract Medium {
|
||||
uint public a;
|
||||
uint[] public b;
|
||||
function f1(uint x) public returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function f2(uint x) public returns (uint) { b[uint8(msg.data[1])] = x; }
|
||||
function f3(uint x) public returns (uint) { b[uint8(msg.data[2])] = x; }
|
||||
function g7(uint x) public payable returns (uint) { b[uint8(msg.data[6])] = x; }
|
||||
function g8(uint x) public payable returns (uint) { b[uint8(msg.data[7])] = x; }
|
||||
function g9(uint x) public payable returns (uint) { b[uint8(msg.data[8])] = x; }
|
||||
function g0(uint x) public payable returns (uint) { require(x > 10); }
|
||||
}
|
||||
contract Small {
|
||||
uint public a;
|
||||
uint[] public b;
|
||||
function f1(uint x) public returns (uint) { a = x; b[uint8(msg.data[0])] = x; }
|
||||
function () external payable {}
|
||||
}
|
1
test/cmdlineTests/gas_test_dispatch_optimize.sol.args
Normal file
1
test/cmdlineTests/gas_test_dispatch_optimize.sol.args
Normal file
@ -0,0 +1 @@
|
||||
--optimize --optimize-runs 2 --gas
|
53
test/cmdlineTests/gas_test_dispatch_optimize.sol.stdout
Normal file
53
test/cmdlineTests/gas_test_dispatch_optimize.sol.stdout
Normal file
@ -0,0 +1,53 @@
|
||||
|
||||
======= gas_test_dispatch_optimize.sol:Large =======
|
||||
Gas estimation:
|
||||
construction:
|
||||
300 + 262000 = 262300
|
||||
external:
|
||||
a(): 463
|
||||
b(uint256): 1173
|
||||
f0(uint256): 399
|
||||
f1(uint256): 41164
|
||||
f2(uint256): 21224
|
||||
f3(uint256): 21312
|
||||
f4(uint256): 21290
|
||||
f5(uint256): 21268
|
||||
f6(uint256): 21180
|
||||
f7(uint256): 20960
|
||||
f8(uint256): 21092
|
||||
f9(uint256): 21114
|
||||
g0(uint256): 639
|
||||
g1(uint256): 40876
|
||||
g2(uint256): 20958
|
||||
g3(uint256): 21046
|
||||
g4(uint256): 21024
|
||||
g5(uint256): 21112
|
||||
g6(uint256): 20892
|
||||
g7(uint256): 21002
|
||||
g8(uint256): 20980
|
||||
g9(uint256): 20826
|
||||
|
||||
======= gas_test_dispatch_optimize.sol:Medium =======
|
||||
Gas estimation:
|
||||
construction:
|
||||
190 + 143000 = 143190
|
||||
external:
|
||||
a(): 463
|
||||
b(uint256): 931
|
||||
f1(uint256): 40944
|
||||
f2(uint256): 20982
|
||||
f3(uint256): 21026
|
||||
g0(uint256): 397
|
||||
g7(uint256): 20892
|
||||
g8(uint256): 20870
|
||||
g9(uint256): 20826
|
||||
|
||||
======= gas_test_dispatch_optimize.sol:Small =======
|
||||
Gas estimation:
|
||||
construction:
|
||||
117 + 67400 = 67517
|
||||
external:
|
||||
fallback: 183
|
||||
a(): 441
|
||||
b(uint256): 821
|
||||
f1(uint256): 40878
|
Loading…
Reference in New Issue
Block a user