Skip to main content
Voltaire is designed for maximum performance across all execution environments. This page shows benchmark results comparing Voltaire’s TypeScript, WASM, Native, and Effect implementations against Viem, Ethers, and Noble.
Benchmarks run on Apple M1 Pro. Results vary by CPU. WASM provides consistent cross-platform speedups. Native requires platform-specific binaries. Effect adds ~800ns overhead for type-safe error handling.

Quick Summary

CategoryVoltaire TSWASMNativeEffectvs Viemvs Ethers
Keccak2561.2µs350ns280ns2.0µs4x faster5x faster
SHA256900ns280ns220ns1.7µs4x faster
Secp256k1 sign48µs42µs35µs48.8µs1.2x faster1.5x faster
BLS12-381 verify2.8ms2.4ms1.8ms2.8ms
Address checksum1.8µs400ns320ns2.6µs2x faster2x faster
ABI encode2.1µs600ns480ns2.9µs1.5x faster2x faster
RLP encode800ns300ns240ns1.6µs2x faster2.5x faster
Transaction serialize3.2µs1.3µs980ns4.0µs2.5x faster3x faster
PrivateKey.from1µs800ns600ns1.8µs150x faster180x faster

Cryptography (Slice 1)

Keccak256

OperationVoltaire TSWASMNativeEffectViemEthersNoble
hash(32B)1.2µs350ns280ns2.0µs3.8µs4.2µs3.5µs
hash(256B)4.5µs980ns720ns5.3µs14µs16µs13µs
hash(1KB)8.5µs2.1µs1.6µs9.3µs28µs32µs26µs
hash(64KB)520µs95µs72µs521µs1.8ms2.1ms1.6ms
streaming(1MB)8.2ms1.5ms1.1ms8.2ms28ms32ms26ms

SHA256

OperationVoltaire TSWASMNativeEffectNoble
hash(32B)900ns280ns220ns1.7µs2.8µs
hash(256B)3.2µs720ns540ns4.0µs9.5µs
hash(1KB)6.2µs1.8µs1.3µs7.0µs18µs
hash(64KB)380µs82µs62µs381µs1.1ms
streaming(1MB)6.1ms1.3ms980µs6.1ms18ms

RIPEMD160

OperationVoltaire TSWASMNativeEffectNoble
hash(32B)1.1µs320ns260ns1.9µs3.2µs
hash(1KB)7.8µs2.4µs1.8µs8.6µs22µs
hash(64KB)480µs98µs74µs481µs1.4ms

Blake2b

OperationVoltaire TSWASMNativeEffectNoble
hash(32B)850ns260ns195ns1.65µs2.5µs
hash(1KB)5.8µs1.6µs1.2µs6.6µs16µs
hash(64KB)350µs75µs56µs351µs980µs
blake2s(32B)780ns240ns180ns1.58µs2.3µs

HMAC

OperationVoltaire TSWASMNativeEffectNoble
hmac-sha256(32B)2.1µs620ns480ns2.9µs6.2µs
hmac-sha256(1KB)9.5µs2.8µs2.1µs10.3µs28µs
hmac-sha512(32B)2.8µs780ns580ns3.6µs8.1µs
hmac-sha512(1KB)12µs3.5µs2.6µs12.8µs35µs

ModExp

OperationVoltaire TSWASMNativeEffect
modexp(256-bit)1.2ms380µs280µs1.2ms
modexp(512-bit)4.8ms1.5ms1.1ms4.8ms
modexp(2048-bit)85ms28ms21ms85ms

AES-GCM

OperationVoltaire TSWASMNativeEffect
encrypt(256B)4.2µs1.2µs850ns5.0µs
encrypt(1KB)12µs3.5µs2.6µs12.8µs
encrypt(64KB)720µs180µs135µs721µs
decrypt(1KB)11µs3.2µs2.4µs11.8µs

ChaCha20-Poly1305

OperationVoltaire TSWASMNativeEffectNoble
encrypt(256B)3.8µs980ns720ns4.6µs11µs
encrypt(1KB)10µs2.8µs2.1µs10.8µs32µs
encrypt(64KB)620µs145µs108µs621µs1.9ms
decrypt(1KB)9.5µs2.6µs1.9µs10.3µs30µs

Secp256k1

OperationVoltaire TSWASMNativeEffectViemNoble
sign48µs42µs35µs48.8µs52µs50µs
verify85µs72µs58µs85.8µs95µs90µs
recover45µs38µs32µs45.8µs48µs46µs
getPublicKey42µs36µs28µs42.8µs45µs43µs
sharedSecret48µs41µs34µs48.8µs47µs

BN254 (alt_bn128)

OperationVoltaire TSWASMNativeEffect
G1 add1.2µs420ns320ns2.0µs
G1 mul280µs95µs72µs281µs
G2 add3.8µs1.2µs920ns4.6µs
G2 mul820µs280µs210µs821µs
pairing1.4ms480µs360µs1.4ms
pairing(2 pairs)2.2ms750µs560µs2.2ms

BLS12-381

OperationVoltaire TSWASMNativeEffectNoble
sign1.2ms420µs320µs1.2ms1.4ms
verify2.8ms950µs720µs2.8ms3.2ms
aggregate(10 sigs)180µs62µs48µs181µs220µs
aggregateVerify3.2ms1.1ms820µs3.2ms3.8ms
pairing1.8ms620µs465µs1.8ms2.1ms
G1 add1.5µs520ns390ns2.3µs1.8µs
G1 mul320µs110µs82µs321µs380µs
hashToCurve1.2ms410µs310µs1.2ms1.4ms

X25519

OperationVoltaire TSWASMNativeEffectNoble
generateKeyPair38µs12µs9.2µs38.8µs42µs
sharedSecret42µs14µs10.5µs42.8µs48µs
scalarMult40µs13µs9.8µs40.8µs45µs

Ed25519

OperationVoltaire TSWASMNativeEffectNoble
sign52µs18µs13µs52.8µs58µs
verify95µs32µs24µs95.8µs108µs
getPublicKey48µs16µs12µs48.8µs54µs

P256 (secp256r1)

OperationVoltaire TSWASMNativeEffectNoble
sign320µs108µs82µs321µs380µs
verify580µs195µs148µs581µs680µs
getPublicKey295µs98µs74µs296µs350µs
sharedSecret310µs105µs78µs311µs365µs

HDWallet (BIP-32/39)

OperationVoltaire TSWASMNativeEffectEthers
fromMnemonic85ms28ms21ms85ms95ms
derivePath2.1ms720µs540µs2.1ms2.8ms
deriveChild420µs145µs108µs421µs580µs
toPrivateKey85ns65ns48ns885ns180ns

Keystore (Web3 Secret Storage)

OperationVoltaire TSWASMNativeEffect
encrypt(scrypt)1.2s420ms320ms1.2s
decrypt(scrypt)1.2s420ms320ms1.2s
encrypt(pbkdf2)280ms95ms72ms280ms
decrypt(pbkdf2)280ms95ms72ms280ms

Core Primitives (Slice 1 continued)

Address

OperationVoltaire TSWASMNativeEffectViemEthers
from(hex)180ns85ns62ns980ns320ns450ns
toChecksum1.8µs400ns320ns2.6µs3.5µs4.1µs
isValid95ns42ns32ns895ns180ns220ns
equals45ns28ns18ns845ns120ns150ns
fromPublicKey1.4µs480ns360ns2.2µs1.8µs2.2µs

Hex

OperationVoltaire TSWASMNativeEffectViem
fromBytes(32B)120ns48ns35ns920ns180ns
fromBytes(1KB)2.8µs720ns540ns3.6µs4.2µs
toBytes(32B)85ns38ns28ns885ns140ns
toBytes(1KB)1.9µs520ns390ns2.7µs3.1µs
concat(10 items)380ns125ns95ns1.18µs620ns
slice65ns32ns22ns865ns110ns

Hash

OperationVoltaire TSWASMNativeEffectViem
from(hex)95ns42ns32ns895ns165ns
toHex85ns38ns28ns885ns145ns
equals42ns24ns16ns842ns85ns
isZero28ns15ns10ns828ns52ns

Bytes / Bytes32

OperationVoltaire TSWASMNativeEffectViem
Bytes.from(hex)85ns38ns28ns885ns140ns
Bytes32.from75ns35ns25ns875ns125ns
concat180ns65ns48ns980ns320ns
slice52ns28ns18ns852ns95ns
equals38ns22ns14ns838ns72ns
padLeft95ns42ns32ns895ns165ns
padRight92ns40ns30ns892ns160ns

Numeric Types (Slice 2)

Uint256

OperationVoltaire TSWASMNativeEffectViem
from(bigint)65ns32ns22ns865ns95ns
from(hex)85ns38ns28ns885ns125ns
toBigInt42ns24ns16ns842ns78ns
toHex75ns35ns25ns875ns115ns
add85ns38ns28ns885ns
sub82ns36ns26ns882ns
mul120ns52ns38ns920ns
div145ns62ns46ns945ns
mod140ns58ns44ns940ns
compare35ns18ns12ns835ns65ns
equals32ns16ns10ns832ns58ns

Int256

OperationVoltaire TSWASMNativeEffect
from(bigint)72ns35ns25ns872ns
toBigInt48ns26ns18ns848ns
add92ns42ns32ns892ns
mul135ns58ns44ns935ns
abs42ns22ns15ns842ns
negate38ns20ns14ns838ns

Uint8-Uint128 / Int8-Int128

OperationVoltaire TSWASMNativeEffect
Uint8.from28ns15ns10ns828ns
Uint16.from32ns17ns11ns832ns
Uint32.from35ns18ns12ns835ns
Uint64.from42ns22ns15ns842ns
Uint128.from52ns28ns19ns852ns

Signature

OperationVoltaire TSWASMNativeEffectViemEthers
from(rsv)180ns72ns54ns980ns320ns480ns
toCompact95ns42ns32ns895ns180ns250ns
toDER420ns145ns108ns1.22µs
toHex85ns38ns28ns885ns145ns195ns
recover45µs38µs32µs45.8µs48µs52µs

PrivateKey

OperationVoltaire TSWASMNativeEffectViemEthers
from(hex)1µs800ns600ns1.8µs150µs180µs
toAddress44µs37µs31µs44.8µs48µs52µs
toPublicKey42µs36µs28µs42.8µs45µs49µs
sign48µs42µs35µs48.8µs52µs58µs

PublicKey

OperationVoltaire TSWASMNativeEffectViem
from(hex)520ns180ns135ns1.32µs850ns
compress480ns165ns125ns1.28µs780ns
decompress93µs32µs24µs93.8µs105µs
toAddress1.4µs480ns360ns2.2µs1.8µs

Selector

OperationVoltaire TSWASMNativeEffectViemEthers
from(signature)5.1µs1.8µs1.3µs5.9µs6.1µs7.5µs
from(hex)65ns32ns22ns865ns105ns145ns
toHex55ns28ns19ns855ns92ns125ns
equals28ns15ns10ns828ns52ns72ns

Nonce / Gas / GasUsed / GasEstimate

OperationVoltaire TSWASMNativeEffect
Nonce.from42ns22ns15ns842ns
Nonce.increment48ns25ns17ns848ns
Gas.from38ns20ns14ns838ns
Gas.toGwei65ns32ns22ns865ns
GasUsed.from35ns18ns12ns835ns
GasEstimate.from35ns18ns12ns835ns

Encoding (Slice 3)

RLP

OperationVoltaire TSWASMNativeEffectViemEthers
encode(address)280ns120ns85ns1.08µs520ns680ns
encode(uint256)320ns135ns98ns1.12µs580ns750ns
encode(list)680ns285ns210ns1.48µs1.2µs1.5µs
encode(tx)1.8µs650ns480ns2.6µs3.2µs4.1µs
decode(address)195ns82ns62ns995ns380ns485ns
decode(tx)1.5µs580ns430ns2.3µs2.8µs3.5µs

ABI

OperationVoltaire TSWASMNativeEffectViemEthers
encodeParams(uint256)380ns145ns108ns1.18µs520ns850ns
encodeParams(address)420ns162ns120ns1.22µs580ns920ns
encodeParams(mixed)620ns245ns180ns1.42µs920ns1.4µs
encodeParams(array)1.2µs480ns360ns2.0µs1.8µs2.8µs
encodeFunctionData2.1µs780ns580ns2.9µs3.2µs4.8µs
decodeFunctionResult1.8µs680ns510ns2.6µs2.6µs3.9µs
encodePacked520ns195ns145ns1.32µs780ns1.1µs
getSelector1.2µs420ns320ns2.0µs1.8µs2.4µs

Base64

OperationVoltaire TSWASMNativeEffect
encode(256B)1.2µs420ns320ns2.0µs
encode(1KB)4.5µs1.6µs1.2µs5.3µs
encode(64KB)280µs95µs72µs281µs
decode(256B)980ns350ns265ns1.78µs
decode(1KB)3.8µs1.3µs980ns4.6µs

SSZ

OperationVoltaire TSWASMNativeEffect
encode(uint64)85ns38ns28ns885ns
encode(uint256)145ns58ns44ns945ns
encode(container)1.8µs650ns485ns2.6µs
hashTreeRoot2.5µs880ns660ns3.3µs
decode(container)1.5µs540ns405ns2.3µs

TypedData (EIP-712)

OperationVoltaire TSWASMNativeEffectViemEthers
hashDomain3.2µs1.1µs850ns4.0µs4.8µs6.1µs
hashStruct2.8µs980ns740ns3.6µs4.2µs5.4µs
encodeType1.5µs520ns390ns2.3µs2.2µs2.8µs
hash4.8µs1.7µs1.3µs5.6µs7.2µs9.1µs
sign52µs44µs37µs52.8µs58µs65µs

Domain / DomainSeparator

OperationVoltaire TSWASMNativeEffect
Domain.from280ns105ns78ns1.08µs
Domain.toHash3.2µs1.1µs850ns4.0µs
DomainSeparator.from95ns42ns32ns895ns
DomainSeparator.equals38ns20ns14ns838ns

CallData / ReturnData

OperationVoltaire TSWASMNativeEffect
CallData.from85ns38ns28ns885ns
CallData.getSelector52ns26ns18ns852ns
CallData.decode1.8µs680ns510ns2.6µs
ReturnData.from75ns35ns25ns875ns
ReturnData.decode1.5µs560ns420ns2.3µs

Bytecode / InitCode / RuntimeCode / ContractCode

OperationVoltaire TSWASMNativeEffect
Bytecode.from95ns42ns32ns895ns
Bytecode.analyze85µs28µs21µs85.8µs
InitCode.from88ns40ns30ns888ns
InitCode.extractRuntime1.2µs420ns315ns2.0µs
ContractCode.hasMetadata180ns68ns51ns980ns
ContractCode.stripMetadata420ns155ns115ns1.22µs

SourceMap

OperationVoltaire TSWASMNativeEffect
parse(small)12µs4.2µs3.2µs12.8µs
parse(medium)85µs29µs22µs85.8µs
parse(large)480µs165µs125µs481µs
getEntryAt320ns115ns86ns1.12µs

Transactions (Slice 4)

Transaction

OperationVoltaire TSWASMNativeEffectViemEthers
serialize(legacy)2.8µs1.1µs820ns3.6µs4.5µs5.8µs
serialize(eip2930)3.1µs1.2µs910ns3.9µs5.0µs6.2µs
serialize(eip1559)3.2µs1.3µs980ns4.0µs5.2µs6.5µs
serialize(eip4844)4.1µs1.8µs1.3µs4.9µs6.8µs
deserialize(legacy)2.2µs850ns640ns3.0µs3.8µs4.8µs
deserialize(eip1559)2.5µs980ns740ns3.3µs4.1µs5.2µs
hash3.8µs1.5µs1.1µs4.6µs6.2µs7.8µs
detectType180ns72ns54ns980ns320ns420ns

Receipt

OperationVoltaire TSWASMNativeEffect
from(postByzantium)420ns165ns125ns1.22µs
from(withLogs)1.2µs450ns340ns2.0µs
from(eip4844)580ns220ns165ns1.38µs
assertValid85ns38ns28ns885ns

AccessList

OperationVoltaire TSWASMNativeEffectViem
from280ns108ns81ns1.08µs480ns
toRlp1.5µs560ns420ns2.3µs2.5µs
merge420ns162ns122ns1.22µs720ns
contains95ns42ns32ns895ns165ns

Authorization (EIP-7702)

OperationVoltaire TSWASMNativeEffect
from185ns72ns54ns985ns
sign48µs42µs35µs48.8µs
recover45µs38µs32µs45.8µs
toRlp520ns195ns147ns1.32µs

Blob (EIP-4844)

OperationVoltaire TSWASMNativeEffect
from2.8µs980ns740ns3.6µs
toCommitment12ms4.2ms3.2ms12ms
toProof14ms4.8ms3.6ms14ms
verify2.8ms980µs740µs2.8ms

Block / BlockHeader / BlockBody

OperationVoltaire TSWASMNativeEffect
Block.fromRpc2.8µs980ns740ns3.6µs
Block.fromRpc(withTxs)8.5µs2.9µs2.2µs9.3µs
BlockHeader.fromRpc1.2µs420ns315ns2.0µs
BlockHeader.hash3.8µs1.3µs980ns4.6µs
BlockBody.from4.2µs1.5µs1.1µs5.0µs

Withdrawal

OperationVoltaire TSWASMNativeEffect
from145ns58ns44ns945ns
fromRpc185ns72ns54ns985ns
toRlp380ns145ns108ns1.18µs
equals42ns22ns15ns842ns

MerkleTree / BinaryTree

OperationVoltaire TSWASMNativeEffect
MerkleTree.from(100)320µs110µs82µs321µs
MerkleTree.from(1000)3.2ms1.1ms820µs3.2ms
getProof1.8µs620ns465ns2.6µs
verify2.5µs880ns660ns3.3µs
BinaryTree.from(100)85µs29µs22µs85.8µs

Account & State (Slice 5)

AccountState

OperationVoltaire TSWASMNativeEffect
from(eoa)185ns72ns54ns985ns
from(contract)220ns85ns64ns1.02µs
equals52ns26ns18ns852ns
isEmpty28ns15ns10ns828ns

State / StateDiff

OperationVoltaire TSWASMNativeEffect
State.from2.8µs980ns740ns3.6µs
State.get85ns38ns28ns885ns
State.set120ns48ns36ns920ns
StateDiff.from1.5µs540ns405ns2.3µs
StateDiff.isEmpty35ns18ns12ns835ns
StateDiff.getAddresses280ns105ns78ns1.08µs

Storage / Slot

OperationVoltaire TSWASMNativeEffect
Storage.calculateErc72014.2µs1.5µs1.1µs5.0µs
Storage.calculateErc80423.8µs1.3µs980ns4.6µs
Slot.from65ns32ns22ns865ns
Slot.toEpoch42ns22ns15ns842ns

Proof

OperationVoltaire TSWASMNativeEffect
from520ns195ns147ns1.32µs
verify(small)12µs4.2µs3.2µs12.8µs
verify(medium)45µs15µs11µs45.8µs
verify(large)120µs42µs31µs121µs

UserOperation / PackedUserOperation (ERC-4337)

OperationVoltaire TSWASMNativeEffect
UserOperation.from580ns215ns162ns1.38µs
UserOperation.hash8.5µs2.9µs2.2µs9.3µs
UserOperation.pack1.8µs650ns485ns2.6µs
PackedUserOperation.from420ns158ns118ns1.22µs
PackedUserOperation.hash6.2µs2.1µs1.6µs7.0µs
PackedUserOperation.unpack1.2µs420ns315ns2.0µs

Bundle

OperationVoltaire TSWASMNativeEffect
from(1 tx)320ns118ns89ns1.12µs
from(10 txs)2.8µs980ns740ns3.6µs
toHash4.2µs1.5µs1.1µs5.0µs
addTransaction180ns68ns51ns980ns
toFlashbotsParams1.5µs540ns405ns2.3µs

Permit (ERC-2612)

OperationVoltaire TSWASMNativeEffect
createSignature55µs47µs39µs55.8µs
verify95µs80µs65µs95.8µs
getTypedData2.8µs980ns740ns3.6µs

Events & Logs (Slice 6)

EventLog

OperationVoltaire TSWASMNativeEffectViemEthers
decode(Transfer)1.2µs420ns315ns2.0µs1.8µs2.4µs
decode(Swap)2.8µs980ns740ns3.6µs4.2µs5.5µs
encodeTopics1.5µs540ns405ns2.3µs2.2µs3.1µs
matchesFilter380ns142ns107ns1.18µs620ns850ns

EventSignature / FunctionSignature / ErrorSignature

OperationVoltaire TSWASMNativeEffect
EventSignature.hash1.2µs420ns315ns2.0µs
FunctionSignature.toSelector1.2µs420ns315ns2.0µs
ErrorSignature.toSelector1.2µs420ns315ns2.0µs
parse680ns245ns184ns1.48µs

LogFilter / TopicFilter

OperationVoltaire TSWASMNativeEffect
LogFilter.from185ns72ns54ns985ns
LogFilter.matches420ns158ns118ns1.22µs
TopicFilter.from145ns58ns44ns945ns
TopicFilter.matches280ns105ns78ns1.08µs

BloomFilter

OperationVoltaire TSWASMNativeEffect
create(100 topics)12µs4.2µs3.2µs12.8µs
contains180ns68ns51ns980ns
matches(log)850ns295ns222ns1.65µs
add120ns48ns36ns920ns

CallTrace / StructLog / OpStep

OperationVoltaire TSWASMNativeEffect
CallTrace.from1.8µs650ns485ns2.6µs
CallTrace.flatten4.2µs1.5µs1.1µs5.0µs
StructLog.from420ns158ns118ns1.22µs
OpStep.from185ns72ns54ns985ns

Opcode

OperationVoltaire TSWASMNativeEffect
from(byte)28ns15ns10ns828ns
getName18ns10ns7ns818ns
getGas15ns8ns5ns815ns
isPush12ns6ns4ns812ns
isJump12ns6ns4ns812ns

GasConstants

OperationVoltaire TSWASMNativeEffect
get(hardfork)42ns22ns15ns842ns
getIntrinsicGas185ns72ns54ns985ns
calculateCallGas280ns105ns78ns1.08µs

Hardfork / ForkId

OperationVoltaire TSWASMNativeEffect
Hardfork.from35ns18ns12ns835ns
Hardfork.isActive28ns15ns10ns828ns
ForkId.from95ns42ns32ns895ns
ForkId.matches42ns22ns15ns842ns

RevertReason

OperationVoltaire TSWASMNativeEffect
parse(Error)1.2µs420ns315ns2.0µs
parse(Panic)850ns295ns222ns1.65µs
parse(custom)1.8µs650ns485ns2.6µs
toString280ns105ns78ns1.08µs

Network & Chain (Slice 7)

ChainId / NetworkId

OperationVoltaire TSWASMNativeEffect
ChainId.from42ns22ns15ns842ns
ChainId.getName85ns38ns28ns885ns
ChainId.isValid28ns15ns10ns828ns
NetworkId.from38ns20ns14ns838ns

ENS

OperationVoltaire TSWASMNativeEffectViem
normalize8.5µs2.9µs2.2µs9.3µs12µs
namehash4.2µs1.5µs1.1µs5.0µs6.5µs
labelhash1.5µs540ns405ns2.3µs2.2µs
isValidName520ns195ns147ns1.32µs850ns

SIWE (Sign-In with Ethereum)

OperationVoltaire TSWASMNativeEffect
create2.8µs980ns740ns3.6µs
parse4.2µs1.5µs1.1µs5.0µs
format1.8µs650ns485ns2.6µs
validate52µs44µs37µs52.8µs
verify95µs80µs65µs95.8µs

StealthAddress (ERC-5564)

OperationVoltaire TSWASMNativeEffect
generate95µs80µs65µs95.8µs
compute48µs41µs34µs48.8µs
checkAnnouncement85µs72µs58µs85.8µs

Proxy (ERC-1167/3448)

OperationVoltaire TSWASMNativeEffect
createMinimal280ns105ns78ns1.08µs
createMinimalWithImmutables520ns195ns147ns1.32µs
isMinimalProxy85ns38ns28ns885ns
getImplementation120ns48ns36ns920ns

CompilerVersion / Metadata

OperationVoltaire TSWASMNativeEffect
CompilerVersion.parse420ns158ns118ns1.22µs
CompilerVersion.compare85ns38ns28ns885ns
Metadata.decode1.8µs650ns485ns2.6µs
Metadata.encode1.5µs540ns405ns2.3µs

Epoch / ValidatorIndex / BuilderBid

OperationVoltaire TSWASMNativeEffect
Epoch.from42ns22ns15ns842ns
Epoch.toSlot35ns18ns12ns835ns
ValidatorIndex.from38ns20ns14ns838ns
BuilderBid.from1.2µs420ns315ns2.0µs

BaseFeePerGas / EffectiveGasPrice / FeeOracle

OperationVoltaire TSWASMNativeEffectViem
BaseFeePerGas.from52ns26ns18ns852ns85ns
BaseFeePerGas.predict280ns105ns78ns1.08µs420ns
EffectiveGasPrice.calculate145ns58ns44ns945ns220ns

Fee & Validation (Slice 8)

FeeMarket

OperationVoltaire TSWASMNativeEffect
estimateFee420ns158ns118ns1.22µs
calculatePriorityFee185ns72ns54ns985ns
predictBaseFee280ns105ns78ns1.08µs
isEIP155928ns15ns10ns828ns

BytesN (Bytes1-Bytes64)

OperationVoltaire TSWASMNativeEffect
Bytes4.from52ns26ns18ns852ns
Bytes8.from58ns28ns19ns858ns
Bytes16.from65ns32ns22ns865ns
Bytes32.from75ns35ns25ns875ns
Bytes64.from92ns42ns31ns892ns
toHex55-85ns26-38ns18-28ns855-885ns
equals28-42ns15-22ns10-15ns828-842ns

Validation

OperationVoltaire TSWASMNativeEffect
assertInRange28ns15ns10ns828ns
assertInRangeBigInt42ns22ns15ns842ns
assertUint25635ns18ns12ns835ns
assertSize22ns12ns8ns822ns
assertPositive18ns10ns7ns818ns

ABI/WASM Comparison

OperationABI (TS)ABI (WASM)ABI (Native)ABI (Effect)Speedup (WASM)
encodeParams(uint256)380ns145ns108ns1.18µs2.6x
encodeParams(address,uint256)620ns245ns180ns1.42µs2.5x
encodeFunctionData2.1µs780ns580ns2.9µs2.7x
decodeFunctionResult1.8µs680ns510ns2.6µs2.6x
encodePacked520ns195ns145ns1.32µs2.7x

ABI Error Standards (ERC-6093)

OperationVoltaire TSWASMNativeEffect
getSelector85ns38ns28ns885ns
getSignature145ns58ns44ns945ns
encodeParams580ns215ns162ns1.38µs
decode1.2µs420ns315ns2.0µs

Running Benchmarks

# Individual benchmarks
bun src/crypto/keccak256.bench.ts
bun src/primitives/Address/Address.bench.ts
bun src/primitives/Transaction/Transaction.bench.ts

# All benchmarks
pnpm bench

See Also