Changeset 4f7b418 for benchmark


Ignore:
Timestamp:
Feb 4, 2020, 11:29:22 AM (6 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum, stuck-waitfor-destruct
Children:
52142c2, 9f575ea, bdfc032
Parents:
09f357ec (diff), e56eb455 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
benchmark
Files:
4 added
13 edited

Legend:

Unmodified
Added
Removed
  • benchmark/Makefile.am

    r09f357ec r4f7b418  
    1111## Created On       : Sun May 31 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jan 20 11:50:13 2020
    14 ## Update Count     : 244
     13## Last Modified On : Sat Jan 25 09:20:44 2020
     14## Update Count     : 255
    1515###############################################################################
    1616
     
    7575.ONESHELL:              # use one shell to execute recipe
    7676.NOTPARALLEL:
    77 .PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv signal.csv
    78 
    79 ## =========================================================================================================
    80 
    81 all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
     77.PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv schedint.csv
     78
     79## =========================================================================================================
     80
     81all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) schedint$(EXEEXT) schedext$(EXEEXT) creation$(EXEEXT)
    8282
    8383basic_loop_DURATION = 15000000000
     
    8989ctxswitch_rust_thread_DURATION = $(ctxswitch_pthread_DURATION)
    9090ctxswitch_cfa_generator_DURATION = 5000000000
     91ctxswitch_nodejs_await_DURATION = 5000000
    9192ctxswitch_DURATION = 100000000
    9293
    93 mutex_java_DURATION = 10000000
     94#mutex_java_DURATION = 10000000
    9495mutex_DURATION = 50000000
    9596
    96 signal_pthread_DURATION = 1000000
    97 signal_java_DURATION = $(signal_pthread_DURATION)
    98 signal_rust_DURATION = $(signal_pthread_DURATION)
    99 signal_DURATION = 10000000
    100 
    101 waitfor_DURATION = 10000000
     97schedint_pthread_DURATION = 1000000
     98schedint_java_DURATION = $(schedint_pthread_DURATION)
     99schedint_rust_DURATION = $(schedint_pthread_DURATION)
     100schedint_DURATION = 10000000
     101
     102schedext_DURATION = 10000000
    102103
    103104creation_pthread_DURATION = 250000
    104 creation_rust_DURATION = ${creation_pthread_DURATION}
     105creation_rust_thread_DURATION = ${creation_pthread_DURATION}
     106creation_java_thread_DURATION = ${creation_pthread_DURATION}
    105107creation_cfa_coroutine_DURATION = 100000000
    106108creation_cfa_coroutine_eager_DURATION = 10000000
     
    151153        +make mutex.csv
    152154        -+make mutex.diff.csv
    153         +make signal.csv
    154         -+make signal.diff.csv
     155        +make schedint.csv
     156        -+make schedint.diff.csv
    155157@DOifskipcompile@
    156158        cat compile.csv
     
    163165        cat mutex.csv
    164166        -cat mutex.diff.csv
    165         cat signal.csv
    166         -cat signal.diff.csv
     167        cat schedint.csv
     168        -cat schedint.diff.csv
    167169
    168170compile.csv:
     
    198200        $(srcdir)/fixcsv.sh $@
    199201
    200 signal.csv:
    201         echo "signal-1,signal-2,waitfor-1,waitfor-2" > $@
    202         +make signal-cfa1.runquiet >> $@ && echo -n ',' >> $@
    203         +make signal-cfa2.runquiet >> $@ && echo -n ',' >> $@
    204         +make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@
    205         +make waitfor-cfa2.runquiet >> $@
     202schedint.csv:
     203        echo "schedint-1,schedint-2,schedext-1,schedext-2" > $@
     204        +make schedint-cfa1.runquiet >> $@ && echo -n ',' >> $@
     205        +make schedint-cfa2.runquiet >> $@ && echo -n ',' >> $@
     206        +make schedext-cfa1.runquiet >> $@ && echo -n ',' >> $@
     207        +make schedext-cfa2.runquiet >> $@
    206208        $(srcdir)/fixcsv.sh $@
    207209
     
    247249        ctxswitch-python_coroutine.run  \
    248250        ctxswitch-nodejs_coroutine.run  \
     251        ctxswitch-nodejs_await.run      \
    249252        ctxswitch-goroutine_thread.run  \
    250253        ctxswitch-rust_thread.run       \
     
    293296        echo "#!/bin/sh" > a.out
    294297        echo "nodejs $(srcdir)/ctxswitch/node_cor.js" >> a.out
     298        chmod a+x a.out
     299
     300ctxswitch-nodejs_await$(EXEEXT):
     301        echo "#!/bin/sh" > a.out
     302        echo "nodejs $(srcdir)/ctxswitch/node_await.js" >> a.out
    295303        chmod a+x a.out
    296304
     
    351359## =========================================================================================================
    352360
    353 signal$(EXEEXT) :               \
    354         signal-cfa1.run         \
    355         signal-cfa2.run         \
    356         signal-cfa4.run         \
    357         signal-upp.run          \
    358         signal-rust.run         \
    359         signal-java.run         \
    360         signal-pthread.run
    361 
    362 signal-pthread$(EXEEXT):
     361schedint$(EXEEXT) :             \
     362        schedint-cfa1.run       \
     363        schedint-cfa2.run       \
     364        schedint-cfa4.run       \
     365        schedint-upp.run        \
     366        schedint-rust.run       \
     367        schedint-java.run       \
     368        schedint-pthread.run
     369
     370schedint-cfa1$(EXEEXT):
     371        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa1.cfa
     372
     373schedint-cfa2$(EXEEXT):
     374        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa2.cfa
     375
     376schedint-cfa4$(EXEEXT):
     377        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa4.cfa
     378
     379schedint-upp$(EXEEXT):
     380        $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedint/upp.cc
     381
     382schedint-rust$(EXEEXT):
     383        $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs
     384
     385schedint-java$(EXEEXT):
     386        $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
     387        echo "#!/bin/sh" > a.out
     388        echo "java JavaThread" >> a.out
     389        chmod a+x a.out
     390
     391schedint-pthread$(EXEEXT):
    363392        $(BENCH_V_CC)$(COMPILE) $(srcdir)/schedint/pthreads.c
    364393
    365 signal-upp$(EXEEXT):
    366         $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedint/upp.cc
    367 
    368 signal-cfa1$(EXEEXT):
    369         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa1.cfa
    370 
    371 signal-cfa2$(EXEEXT):
    372         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa2.cfa
    373 
    374 signal-cfa4$(EXEEXT):
    375         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa4.cfa
    376 
    377 signal-rust$(EXEEXT):
    378         $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs
    379 
    380 signal-java$(EXEEXT):
    381         $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
    382         echo "#!/bin/sh" > a.out
    383         echo "java JavaThread" >> a.out
    384         chmod a+x a.out
    385 
    386 ## =========================================================================================================
    387 
    388 waitfor$(EXEEXT) :              \
    389         waitfor-cfa1.run        \
    390         waitfor-cfa2.run        \
    391         waitfor-cfa4.run        \
    392         waitfor-upp.run
    393 
    394 waitfor-upp$(EXEEXT):
     394## =========================================================================================================
     395
     396schedext$(EXEEXT) :             \
     397        schedext-cfa1.run       \
     398        schedext-cfa2.run       \
     399        schedext-cfa4.run       \
     400        schedext-upp.run        \
     401        schedext-goroutine.run
     402
     403schedext-cfa1$(EXEEXT):
     404        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa1.cfa
     405
     406schedext-cfa2$(EXEEXT):
     407        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa2.cfa
     408
     409schedext-cfa4$(EXEEXT):
     410        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa4.cfa
     411
     412schedext-upp$(EXEEXT):
    395413        $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedext/upp.cc
    396414
    397 waitfor-cfa1$(EXEEXT):
    398         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa1.cfa
    399 
    400 waitfor-cfa2$(EXEEXT):
    401         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa2.cfa
    402 
    403 waitfor-cfa4$(EXEEXT):
    404         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa4.cfa
     415schedext-goroutine$(EXEEXT):
     416        $(BENCH_V_GOC)go build -o a.out $(srcdir)/schedext/goroutine.go
     417
    405418
    406419## =========================================================================================================
    407420
    408421creation$(EXEEXT) :                             \
     422        creation-cfa_generator.run              \
    409423        creation-cfa_coroutine.run              \
    410424        creation-cfa_coroutine_eager.run        \
     
    419433        creation-pthread.run
    420434
     435creation-cfa_generator$(EXEEXT):
     436        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_gen.cfa
     437
    421438creation-cfa_coroutine$(EXEEXT):
    422439        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_cor.cfa
     
    450467        $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/creation/rust_thrd.rs
    451468
    452 creation-java$(EXEEXT):
     469creation-java_thread$(EXEEXT):
    453470        $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java
    454471        echo "#!/bin/sh" > a.out
  • benchmark/Makefile.in

    r09f357ec r4f7b418  
    426426ctxswitch_rust_thread_DURATION = $(ctxswitch_pthread_DURATION)
    427427ctxswitch_cfa_generator_DURATION = 5000000000
     428ctxswitch_nodejs_await_DURATION = 5000000
    428429ctxswitch_DURATION = 100000000
    429 mutex_java_DURATION = 10000000
     430
     431#mutex_java_DURATION = 10000000
    430432mutex_DURATION = 50000000
    431 signal_pthread_DURATION = 1000000
    432 signal_java_DURATION = $(signal_pthread_DURATION)
    433 signal_rust_DURATION = $(signal_pthread_DURATION)
    434 signal_DURATION = 10000000
    435 waitfor_DURATION = 10000000
     433schedint_pthread_DURATION = 1000000
     434schedint_java_DURATION = $(schedint_pthread_DURATION)
     435schedint_rust_DURATION = $(schedint_pthread_DURATION)
     436schedint_DURATION = 10000000
     437schedext_DURATION = 10000000
    436438creation_pthread_DURATION = 250000
    437 creation_rust_DURATION = ${creation_pthread_DURATION}
     439creation_rust_thread_DURATION = ${creation_pthread_DURATION}
     440creation_java_thread_DURATION = ${creation_pthread_DURATION}
    438441creation_cfa_coroutine_DURATION = 100000000
    439442creation_cfa_coroutine_eager_DURATION = 10000000
     
    454457        ctxswitch-cfa_thread2.run ctxswitch-upp_coroutine.run \
    455458        ctxswitch-upp_thread.run ctxswitch-python_coroutine.run \
    456         ctxswitch-nodejs_coroutine.run ctxswitch-goroutine_thread.run \
    457         ctxswitch-rust_thread.run ctxswitch-nodejs_coroutine.run \
    458         ctxswitch-java_thread.run ctxswitch-pthread.run \
    459         $(am__append_1)
     459        ctxswitch-nodejs_coroutine.run ctxswitch-nodejs_await.run \
     460        ctxswitch-goroutine_thread.run ctxswitch-rust_thread.run \
     461        ctxswitch-nodejs_coroutine.run ctxswitch-java_thread.run \
     462        ctxswitch-pthread.run $(am__append_1)
    460463testdir = $(top_srcdir)/tests
    461464all: all-am
     
    784787.ONESHELL:              # use one shell to execute recipe
    785788.NOTPARALLEL:
    786 .PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv signal.csv
    787 
    788 all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
     789.PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv schedint.csv
     790
     791all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) schedint$(EXEEXT) schedext$(EXEEXT) creation$(EXEEXT)
    789792
    790793%.run : %$(EXEEXT) ${REPEAT}
     
    825828        +make mutex.csv
    826829        -+make mutex.diff.csv
    827         +make signal.csv
    828         -+make signal.diff.csv
     830        +make schedint.csv
     831        -+make schedint.diff.csv
    829832@DOifskipcompile@
    830833        cat compile.csv
     
    837840        cat mutex.csv
    838841        -cat mutex.diff.csv
    839         cat signal.csv
    840         -cat signal.diff.csv
     842        cat schedint.csv
     843        -cat schedint.diff.csv
    841844
    842845compile.csv:
     
    872875        $(srcdir)/fixcsv.sh $@
    873876
    874 signal.csv:
    875         echo "signal-1,signal-2,waitfor-1,waitfor-2" > $@
    876         +make signal-cfa1.runquiet >> $@ && echo -n ',' >> $@
    877         +make signal-cfa2.runquiet >> $@ && echo -n ',' >> $@
    878         +make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@
    879         +make waitfor-cfa2.runquiet >> $@
     877schedint.csv:
     878        echo "schedint-1,schedint-2,schedext-1,schedext-2" > $@
     879        +make schedint-cfa1.runquiet >> $@ && echo -n ',' >> $@
     880        +make schedint-cfa2.runquiet >> $@ && echo -n ',' >> $@
     881        +make schedext-cfa1.runquiet >> $@ && echo -n ',' >> $@
     882        +make schedext-cfa2.runquiet >> $@
    880883        $(srcdir)/fixcsv.sh $@
    881884
     
    935938        echo "#!/bin/sh" > a.out
    936939        echo "nodejs $(srcdir)/ctxswitch/node_cor.js" >> a.out
     940        chmod a+x a.out
     941
     942ctxswitch-nodejs_await$(EXEEXT):
     943        echo "#!/bin/sh" > a.out
     944        echo "nodejs $(srcdir)/ctxswitch/node_await.js" >> a.out
    937945        chmod a+x a.out
    938946
     
    989997        chmod a+x a.out
    990998
    991 signal$(EXEEXT) :               \
    992         signal-cfa1.run         \
    993         signal-cfa2.run         \
    994         signal-cfa4.run         \
    995         signal-upp.run          \
    996         signal-rust.run         \
    997         signal-java.run         \
    998         signal-pthread.run
    999 
    1000 signal-pthread$(EXEEXT):
    1001         $(BENCH_V_CC)$(COMPILE) $(srcdir)/schedint/pthreads.c
    1002 
    1003 signal-upp$(EXEEXT):
     999schedint$(EXEEXT) :             \
     1000        schedint-cfa1.run       \
     1001        schedint-cfa2.run       \
     1002        schedint-cfa4.run       \
     1003        schedint-upp.run        \
     1004        schedint-rust.run       \
     1005        schedint-java.run       \
     1006        schedint-pthread.run
     1007
     1008schedint-cfa1$(EXEEXT):
     1009        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa1.cfa
     1010
     1011schedint-cfa2$(EXEEXT):
     1012        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa2.cfa
     1013
     1014schedint-cfa4$(EXEEXT):
     1015        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa4.cfa
     1016
     1017schedint-upp$(EXEEXT):
    10041018        $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedint/upp.cc
    10051019
    1006 signal-cfa1$(EXEEXT):
    1007         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa1.cfa
    1008 
    1009 signal-cfa2$(EXEEXT):
    1010         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa2.cfa
    1011 
    1012 signal-cfa4$(EXEEXT):
    1013         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa4.cfa
    1014 
    1015 signal-rust$(EXEEXT):
     1020schedint-rust$(EXEEXT):
    10161021        $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs
    10171022
    1018 signal-java$(EXEEXT):
     1023schedint-java$(EXEEXT):
    10191024        $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java
    10201025        echo "#!/bin/sh" > a.out
     
    10221027        chmod a+x a.out
    10231028
    1024 waitfor$(EXEEXT) :              \
    1025         waitfor-cfa1.run        \
    1026         waitfor-cfa2.run        \
    1027         waitfor-cfa4.run        \
    1028         waitfor-upp.run
    1029 
    1030 waitfor-upp$(EXEEXT):
     1029schedint-pthread$(EXEEXT):
     1030        $(BENCH_V_CC)$(COMPILE) $(srcdir)/schedint/pthreads.c
     1031
     1032schedext$(EXEEXT) :             \
     1033        schedext-cfa1.run       \
     1034        schedext-cfa2.run       \
     1035        schedext-cfa4.run       \
     1036        schedext-upp.run        \
     1037        schedext-goroutine.run
     1038
     1039schedext-cfa1$(EXEEXT):
     1040        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa1.cfa
     1041
     1042schedext-cfa2$(EXEEXT):
     1043        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa2.cfa
     1044
     1045schedext-cfa4$(EXEEXT):
     1046        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa4.cfa
     1047
     1048schedext-upp$(EXEEXT):
    10311049        $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedext/upp.cc
    10321050
    1033 waitfor-cfa1$(EXEEXT):
    1034         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa1.cfa
    1035 
    1036 waitfor-cfa2$(EXEEXT):
    1037         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa2.cfa
    1038 
    1039 waitfor-cfa4$(EXEEXT):
    1040         $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa4.cfa
     1051schedext-goroutine$(EXEEXT):
     1052        $(BENCH_V_GOC)go build -o a.out $(srcdir)/schedext/goroutine.go
    10411053
    10421054creation$(EXEEXT) :                             \
     1055        creation-cfa_generator.run              \
    10431056        creation-cfa_coroutine.run              \
    10441057        creation-cfa_coroutine_eager.run        \
     
    10531066        creation-pthread.run
    10541067
     1068creation-cfa_generator$(EXEEXT):
     1069        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_gen.cfa
     1070
    10551071creation-cfa_coroutine$(EXEEXT):
    10561072        $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_cor.cfa
     
    10841100        $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/creation/rust_thrd.rs
    10851101
    1086 creation-java$(EXEEXT):
     1102creation-java_thread$(EXEEXT):
    10871103        $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java
    10881104        echo "#!/bin/sh" > a.out
  • benchmark/schedext/cfa1.cfa

    r09f357ec r4f7b418  
    66#include "../bench.h"
    77
    8 volatile int go = 0;
    9 
    108monitor M {} m1;
    119
    1210void __attribute__((noinline)) call( M & mutex p1 ) {}
    13 
    1411void __attribute__((noinline)) wait( M & mutex p1 ) {
    15         go = 1;
    1612        for ( times ) {
    1713                waitfor( call : p1 );
    1814        }
    19         go = 0;
    2015}
    2116
    2217thread T {};
    2318void main( T & ) {
    24         while ( go == 0 ) { yield(); }
    2519        BENCH(
    26                 while ( go == 1 ) { call( m1 ); },
     20                for ( times ) { call( m1 ); },
    2721                result
    2822        )
  • benchmark/schedext/cfa2.cfa

    r09f357ec r4f7b418  
    44#include <stdio.h>
    55
    6 #include "bench.h"
    7 
    8 volatile int go = 0;
     6#include "../bench.h"
    97
    108monitor M {} m1, m2;
    119
    1210void __attribute__((noinline)) call( M & mutex p1, M & mutex p2 ) {}
    13 
    1411void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2 ) {
    15         go = 1;
    1612        for ( times ) {
    1713                waitfor( call : p1, p2 );
    1814        }
    19         go = 0;
    2015}
    21 
    2216thread T {};
    2317void main( T & ) {
    24         while( go == 0 ) { yield(); }
    2518        BENCH(
    26                 while ( go == 1 ) { call( m1, m2 ); },
     19                for ( times ) {
     20                        call( m1, m2 );
     21                },
    2722                result
    2823        )
  • benchmark/schedext/cfa4.cfa

    r09f357ec r4f7b418  
    44#include <stdio.h>
    55
    6 #include "bench.h"
    7 
    8 volatile int go = 0;
     6#include "../bench.h"
    97
    108monitor M {} m1, m2, m3, m4;
    119
    1210void __attribute__((noinline)) call( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) {}
    13 
    1411void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) {
    15         go = 1;
    1612        for ( times ) {
    1713                waitfor( call : p1, p2, p3, p4 );
    1814        }
    19         go = 0;
    2015}
    21 
    2216thread T {};
    2317void main( T & ) {
    24         while( go == 0 ) { yield(); }
    2518        BENCH(
    26                 while( go == 1 ) { call( m1, m2, m3, m4 ); },
     19                for ( times ) {
     20                        call( m1, m2, m3, m4 );
     21                },
    2722                result
    2823        )
  • benchmark/schedext/upp.cc

    r09f357ec r4f7b418  
    33#include "bench.h"
    44
    5 volatile int go = 0;
    6 
    75_Monitor M {
    86public:
    97        void __attribute__((noinline)) call() {}
    10 
    11         int __attribute__((noinline)) wait() {
    12                 go = 1;
     8        void __attribute__((noinline)) wait() {
    139                for ( size_t i = 0; i < times; i++ ) {
    1410                        _Accept(call);
    1511                }
    16                 go = 0;
    17                 return 0;
    1812        }
    1913} m;
     
    2115_Task T {
    2216        void main() {
    23                 while ( go == 0 ) { yield(); }
    2417                BENCH(
    25                         while ( go == 1 ) { m.call(); },
     18                        for ( size_t i = 0; i < times; i++ ) {
     19                                m.call();
     20                        },
    2621                        result
    2722                )
     
    3328        BENCH_START()
    3429        T t;
    35         return m.wait();
     30        m.wait();
    3631}
    3732
  • benchmark/schedint/JavaThread.java

    r09f357ec r4f7b418  
    6363                synchronized(m) {
    6464                        s.start();
    65                         while( !Monitor.go ) {
     65                        while( ! Monitor.go ) { // waiter must start first
    6666                                Thread.yield();
    6767                        }
  • benchmark/schedint/cfa1.cfa

    r09f357ec r4f7b418  
    77
    88volatile int go = 0;
     9
    910condition c;
    1011monitor M {} m1;
     
    1314        signal( c );
    1415}
    15 
    1616void __attribute__((noinline)) wait( M & mutex p1 ) {
    1717        go = 1;
     
    1919                wait( c );
    2020        }
    21         go = 0;
    2221}
    2322
    2423thread T {};
    2524void main( T & ) {
    26         while ( go == 0 ) { yield(); }
     25        while ( go == 0 ) { yield(); } // waiter must start first
    2726        BENCH(
    28                 while ( go == 1 ) { call( m1 ); },
     27                for ( times ) { call( m1 ); },
    2928                result
    3029        )
  • benchmark/schedint/cfa2.cfa

    r09f357ec r4f7b418  
    77
    88volatile int go = 0;
     9
    910condition c;
    1011monitor M {} m1, m2;
     
    1314        signal( c );
    1415}
    15 
    1616void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2 ) {
    1717        go = 1;
     
    1919                wait( c );
    2020        }
    21         go = 0;
    2221}
    2322
    2423thread T {};
    2524void main( T & ) {
    26         while ( go == 0 ) { yield(); }
     25        while ( go == 0 ) { yield(); } // waiter must start first
    2726        BENCH(
    28                 while ( go == 1 ) { call( m1, m2 ); },
     27                for ( times ) { call( m1, m2 ); },
    2928                result
    3029        )
  • benchmark/schedint/cfa4.cfa

    r09f357ec r4f7b418  
    44#include <stdio.h>
    55
    6 #include "bench.h"
     6#include "../bench.h"
    77
    88volatile int go = 0;
     9
    910condition c;
    1011monitor M {} m1, m2, m3, m4;
     
    1314        signal( c );
    1415}
    15 
    1616void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) {
    1717        go = 1;
     
    1919                wait( c );
    2020        }
    21         go = 0;
    2221}
    2322
    2423thread T {};
    2524void main( T & ) {
    26         while ( go == 0 ) { yield(); }
     25        while ( go == 0 ) { yield(); } // waiter must start first
    2726        BENCH(
    28                 while ( go == 1 ) { call( m1, m2, m3, m4 ); },
     27                for ( times ) { call( m1, m2, m3, m4 ); },
    2928                result
    3029        )
  • benchmark/schedint/pthreads.c

    r09f357ec r4f7b418  
    66volatile int go = 0;
    77
     8pthread_mutex_t m;
    89pthread_cond_t c;
    9 pthread_mutex_t m;
    1010
    1111void __attribute__((noinline)) call() {
    12         pthread_mutex_lock(&m);
    13         pthread_cond_signal(&c);
    14         pthread_mutex_unlock(&m);
     12        pthread_mutex_lock( &m );
     13        pthread_cond_signal( &c );
     14        pthread_mutex_unlock( &m );
    1515}
    1616
    17 int __attribute__((noinline)) wait() {
     17void __attribute__((noinline)) wait() {
    1818        pthread_mutex_lock(&m);
    1919        go = 1;
     20        for ( size_t i = 0; i < times; i++ ) {
     21                pthread_cond_wait( &c, &m );
     22        }
     23        go = 0;
     24        pthread_mutex_unlock( &m );
     25}
     26
     27void * thread_main( __attribute__((unused)) void * arg ) {
     28        while ( go == 0 ) { sched_yield(); } // waiter must start first
     29        // barging for lock acquire => may not execute N times
    2030        BENCH(
    21                 for (size_t i = 0; i < times; i++) {
    22                         pthread_cond_wait(&c, &m);
    23                 },
     31                while ( go == 1 ) { call(); },
    2432                result
    2533        )
    2634        printf( "%g\n", result );
    27         go = 0;
    28         pthread_mutex_unlock(&m);
    29         return 0;
    30 }
    31 
    32 void* thread_main(__attribute__((unused)) void * arg ) {
    33         while(go == 0) { sched_yield(); }
    34         while(go == 1) { call(); }
    3535        return NULL;
    3636}
     
    3939        BENCH_START()
    4040        pthread_t thread;
    41         if (pthread_create(&thread, NULL, thread_main, NULL) < 0) {
     41        if ( pthread_create( &thread, NULL, thread_main, NULL ) < 0 ) {
    4242                perror( "failure" );
    4343                return 1;
    4444        }
    4545        wait();
    46         if (pthread_join( thread, NULL) < 0) {
     46        if ( pthread_join( thread, NULL ) < 0 ) {
    4747                perror( "failure" );
    4848                return 1;
  • benchmark/schedint/rust.rs

    r09f357ec r4f7b418  
    1818
    1919        let th = thread::spawn( move || {
    20                 while *m2.lock().unwrap() == 0 {
     20                while *m2.lock().unwrap() == 0 { // waiter must start first
    2121                        thread::yield_now();
    2222                }
  • benchmark/schedint/upp.cc

    r09f357ec r4f7b418  
    1111                cond.signal();
    1212        }
     13        void __attribute__((noinline)) wait() {
     14                go = 1;
     15                for ( size_t i = 0; i < times; i++ ) {
     16                        cond.wait();
     17                }
     18        }
     19} m;
    1320
    14         int __attribute__((noinline)) wait() {
    15                 go = 1;
     21_Task T {
     22        void main() {
     23                while ( go == 0 ) { yield(); } // waiter must start first
    1624                BENCH(
    17                         for (size_t i = 0; i < times; i++) {
    18                                 cond.wait();
     25                        for ( size_t i = 0; i < times; i++ ) {
     26                                m.call();
    1927                        },
    2028                        result
    2129                )
    2230                printf( "%g\n", result );
    23                 go = 0;
    24                 return 0;
    25         }
    26 };
    27 
    28 M m;
    29 
    30 _Task T {
    31         void main() {
    32                 while(go == 0) { yield(); }
    33                 while(go == 1) { m.call(); }
    34 
    3531        }
    3632};
     
    3935        BENCH_START()
    4036        T t;
    41         return m.wait();
     37        m.wait();
    4238}
    4339
Note: See TracChangeset for help on using the changeset viewer.