Spidermonkey (91), QuickJS (2021-03-27)
Intel MacOS SM91
% ./configure --dev --spidermonkey-version 91 && make
% TIMEFMT=$'Total (sec): \t%*E\nMax RSS(kb): \t%M\n'
% time ./couchjs
Spidermonkey (91), QuickJS (2021-03-27)
Intel MacOS SM91
% ./configure --dev --spidermonkey-version 91 && make
% TIMEFMT=$'Total (sec): \t%*E\nMax RSS(kb): \t%M\n'
% time ./couchjs
| % | |
| % Run on Erlang 24+ | |
| % | |
| % (MFatags true is to enable instrumentation for fix_alloc) | |
| % | |
| % $ erl -name [email protected] +MFatags true | |
| % ([email protected])> | |
| % | |
| % $ erl -name [email protected] +MFatags true | |
| % ([email protected])2> c(fixalloc), fixalloc:go('[email protected]'). |
| % | |
| % $ erl -name [email protected] | |
| % | |
| % $ erl -name [email protected] | |
| % ([email protected])2> dist_perf:go('[email protected]'). | |
| -module(distbench). | |
| -export([go/1, go/2, go/3, stop/0, gc/0, stats/1]). |
| %> filebench:all("...data.../filebench.couch"). | |
| % * bsize: 65536 pread: 11 couch_file pread: 74 write: 465 couch_file append_bin: 477 | |
| % * bsize: 16384 pread: 8 couch_file pread: 49 write: 218 couch_file append_bin: 277 | |
| % * bsize: 4096 pread: 9 couch_file pread: 41 write: 197 couch_file append_bin: 236 | |
| % * bsize: 1024 pread: 11 couch_file pread: 37 write: 183 couch_file append_bin: 222 | |
| % | |
| -module(filebench). |
| -module(fbench). | |
| % fbench:bench(). | |
| % * created db fbench-1683604564287312344 [{q,64},{n,3}] in 17869 usec | |
| % * put 200 docs with 2823 usec per op | |
| % * get doc 20000X with 1157 usec per op | |
| % * get security 20000X with 225 usec per op | |
| % ok | |
| -export([ |
| -module(estone). | |
| % Copied form OTP erts/emulator/test/estone_SUITE.erl | |
| % run with estone:estone(). May take a few minutes to run. | |
| % | |
| -export([estone/0]). | |
| %% Internal exports for EStone tests | |
| -export([ |
| -module(ringbench). | |
| -export([go/2]). | |
| go(M, N) when is_integer(M), M > 1, is_integer(N), N > 1 -> | |
| io:format("~p processes, ~p messages~n", [N, M]), | |
| T = erlang:monotonic_time(), | |
| {FirstPid, FirstRef} = spawn_monitor(fun() -> first() end), | |
| LastPid = lists:foldl(fun(_, Pid) -> spawn_link(fun() -> loop(Pid) end) end, FirstPid, lists:seq(2, N)), | |
| io:format("processes spawned in ~p usec~n", [dt(T)]), |
| -module(statbench). | |
| -export([ | |
| go_counter/2, | |
| go_gauge/2, | |
| go_hist/2 | |
| ]). | |
| go_counter(N, X) -> | |
| go(N, X, fun upstat_counter/1). |
| global | |
| maxconn 10000 | |
| spread-checks 5 | |
| defaults | |
| mode http | |
| log global | |
| option httplog | |
| log stdout format raw local0 | |
| balance roundrobin |
| %% Reproducer attempt for https://github.com/erlang/otp/issues/7801 | |
| %% It's supposed to model the couch_file.erl from Apache CouchDB | |
| %% | |
| %% Example run: | |
| %% c(ioblock), ioblock:go("./junk.bin", 8192, 60, 4000). | |
| %% - Create a temporary junk.bin file with 8GB of random data | |
| %% - Spawn 60 gen_servers to handle preads from the file | |
| %% - Spawn 4000 caller processes to call the servers with pread commands | |
| %% | |
| %% Note: run the first time without measuring to create the larger file. |