- Timestamp:
- Feb 4, 2020, 11:29:22 AM (6 years ago)
- 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. - Location:
- benchmark
- Files:
-
- 4 added
- 13 edited
-
Makefile.am (modified) (11 diffs)
-
Makefile.in (modified) (11 diffs)
-
creation/cfa_gen.cfa (added)
-
ctxswitch/node_await.js (added)
-
exclude (added)
-
schedext/cfa1.cfa (modified) (1 diff)
-
schedext/cfa2.cfa (modified) (1 diff)
-
schedext/cfa4.cfa (modified) (1 diff)
-
schedext/goroutine.go (added)
-
schedext/upp.cc (modified) (3 diffs)
-
schedint/JavaThread.java (modified) (1 diff)
-
schedint/cfa1.cfa (modified) (3 diffs)
-
schedint/cfa2.cfa (modified) (3 diffs)
-
schedint/cfa4.cfa (modified) (3 diffs)
-
schedint/pthreads.c (modified) (2 diffs)
-
schedint/rust.rs (modified) (1 diff)
-
schedint/upp.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
benchmark/Makefile.am
r09f357ec r4f7b418 11 11 ## Created On : Sun May 31 09:08:15 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Mon Jan 20 11:50:13202014 ## Update Count : 2 4413 ## Last Modified On : Sat Jan 25 09:20:44 2020 14 ## Update Count : 255 15 15 ############################################################################### 16 16 … … 75 75 .ONESHELL: # use one shell to execute recipe 76 76 .NOTPARALLEL: 77 .PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv s ignal.csv78 79 ## ========================================================================================================= 80 81 all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) s ignal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)77 .PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv schedint.csv 78 79 ## ========================================================================================================= 80 81 all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) schedint$(EXEEXT) schedext$(EXEEXT) creation$(EXEEXT) 82 82 83 83 basic_loop_DURATION = 15000000000 … … 89 89 ctxswitch_rust_thread_DURATION = $(ctxswitch_pthread_DURATION) 90 90 ctxswitch_cfa_generator_DURATION = 5000000000 91 ctxswitch_nodejs_await_DURATION = 5000000 91 92 ctxswitch_DURATION = 100000000 92 93 93 mutex_java_DURATION = 1000000094 #mutex_java_DURATION = 10000000 94 95 mutex_DURATION = 50000000 95 96 96 s ignal_pthread_DURATION = 100000097 s ignal_java_DURATION = $(signal_pthread_DURATION)98 s ignal_rust_DURATION = $(signal_pthread_DURATION)99 s ignal_DURATION = 10000000100 101 waitfor_DURATION = 1000000097 schedint_pthread_DURATION = 1000000 98 schedint_java_DURATION = $(schedint_pthread_DURATION) 99 schedint_rust_DURATION = $(schedint_pthread_DURATION) 100 schedint_DURATION = 10000000 101 102 schedext_DURATION = 10000000 102 103 103 104 creation_pthread_DURATION = 250000 104 creation_rust_DURATION = ${creation_pthread_DURATION} 105 creation_rust_thread_DURATION = ${creation_pthread_DURATION} 106 creation_java_thread_DURATION = ${creation_pthread_DURATION} 105 107 creation_cfa_coroutine_DURATION = 100000000 106 108 creation_cfa_coroutine_eager_DURATION = 10000000 … … 151 153 +make mutex.csv 152 154 -+make mutex.diff.csv 153 +make s ignal.csv154 -+make s ignal.diff.csv155 +make schedint.csv 156 -+make schedint.diff.csv 155 157 @DOifskipcompile@ 156 158 cat compile.csv … … 163 165 cat mutex.csv 164 166 -cat mutex.diff.csv 165 cat s ignal.csv166 -cat s ignal.diff.csv167 cat schedint.csv 168 -cat schedint.diff.csv 167 169 168 170 compile.csv: … … 198 200 $(srcdir)/fixcsv.sh $@ 199 201 200 s ignal.csv:201 echo "s ignal-1,signal-2,waitfor-1,waitfor-2" > $@202 +make s ignal-cfa1.runquiet >> $@ && echo -n ',' >> $@203 +make s ignal-cfa2.runquiet >> $@ && echo -n ',' >> $@204 +make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@205 +make waitfor-cfa2.runquiet >> $@202 schedint.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 >> $@ 206 208 $(srcdir)/fixcsv.sh $@ 207 209 … … 247 249 ctxswitch-python_coroutine.run \ 248 250 ctxswitch-nodejs_coroutine.run \ 251 ctxswitch-nodejs_await.run \ 249 252 ctxswitch-goroutine_thread.run \ 250 253 ctxswitch-rust_thread.run \ … … 293 296 echo "#!/bin/sh" > a.out 294 297 echo "nodejs $(srcdir)/ctxswitch/node_cor.js" >> a.out 298 chmod a+x a.out 299 300 ctxswitch-nodejs_await$(EXEEXT): 301 echo "#!/bin/sh" > a.out 302 echo "nodejs $(srcdir)/ctxswitch/node_await.js" >> a.out 295 303 chmod a+x a.out 296 304 … … 351 359 ## ========================================================================================================= 352 360 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): 361 schedint$(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 370 schedint-cfa1$(EXEEXT): 371 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa1.cfa 372 373 schedint-cfa2$(EXEEXT): 374 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa2.cfa 375 376 schedint-cfa4$(EXEEXT): 377 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa4.cfa 378 379 schedint-upp$(EXEEXT): 380 $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedint/upp.cc 381 382 schedint-rust$(EXEEXT): 383 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs 384 385 schedint-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 391 schedint-pthread$(EXEEXT): 363 392 $(BENCH_V_CC)$(COMPILE) $(srcdir)/schedint/pthreads.c 364 393 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 396 schedext$(EXEEXT) : \ 397 schedext-cfa1.run \ 398 schedext-cfa2.run \ 399 schedext-cfa4.run \ 400 schedext-upp.run \ 401 schedext-goroutine.run 402 403 schedext-cfa1$(EXEEXT): 404 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa1.cfa 405 406 schedext-cfa2$(EXEEXT): 407 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa2.cfa 408 409 schedext-cfa4$(EXEEXT): 410 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa4.cfa 411 412 schedext-upp$(EXEEXT): 395 413 $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedext/upp.cc 396 414 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 415 schedext-goroutine$(EXEEXT): 416 $(BENCH_V_GOC)go build -o a.out $(srcdir)/schedext/goroutine.go 417 405 418 406 419 ## ========================================================================================================= 407 420 408 421 creation$(EXEEXT) : \ 422 creation-cfa_generator.run \ 409 423 creation-cfa_coroutine.run \ 410 424 creation-cfa_coroutine_eager.run \ … … 419 433 creation-pthread.run 420 434 435 creation-cfa_generator$(EXEEXT): 436 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_gen.cfa 437 421 438 creation-cfa_coroutine$(EXEEXT): 422 439 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_cor.cfa … … 450 467 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/creation/rust_thrd.rs 451 468 452 creation-java $(EXEEXT):469 creation-java_thread$(EXEEXT): 453 470 $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java 454 471 echo "#!/bin/sh" > a.out -
benchmark/Makefile.in
r09f357ec r4f7b418 426 426 ctxswitch_rust_thread_DURATION = $(ctxswitch_pthread_DURATION) 427 427 ctxswitch_cfa_generator_DURATION = 5000000000 428 ctxswitch_nodejs_await_DURATION = 5000000 428 429 ctxswitch_DURATION = 100000000 429 mutex_java_DURATION = 10000000 430 431 #mutex_java_DURATION = 10000000 430 432 mutex_DURATION = 50000000 431 s ignal_pthread_DURATION = 1000000432 s ignal_java_DURATION = $(signal_pthread_DURATION)433 s ignal_rust_DURATION = $(signal_pthread_DURATION)434 s ignal_DURATION = 10000000435 waitfor_DURATION = 10000000433 schedint_pthread_DURATION = 1000000 434 schedint_java_DURATION = $(schedint_pthread_DURATION) 435 schedint_rust_DURATION = $(schedint_pthread_DURATION) 436 schedint_DURATION = 10000000 437 schedext_DURATION = 10000000 436 438 creation_pthread_DURATION = 250000 437 creation_rust_DURATION = ${creation_pthread_DURATION} 439 creation_rust_thread_DURATION = ${creation_pthread_DURATION} 440 creation_java_thread_DURATION = ${creation_pthread_DURATION} 438 441 creation_cfa_coroutine_DURATION = 100000000 439 442 creation_cfa_coroutine_eager_DURATION = 10000000 … … 454 457 ctxswitch-cfa_thread2.run ctxswitch-upp_coroutine.run \ 455 458 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) 460 463 testdir = $(top_srcdir)/tests 461 464 all: all-am … … 784 787 .ONESHELL: # use one shell to execute recipe 785 788 .NOTPARALLEL: 786 .PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv s ignal.csv787 788 all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) s ignal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)789 .PHONY: compile.csv basic.csv ctxswitch.csv mutex.csv schedint.csv 790 791 all : basic$(EXEEXT) ctxswitch$(EXEEXT) mutex$(EXEEXT) schedint$(EXEEXT) schedext$(EXEEXT) creation$(EXEEXT) 789 792 790 793 %.run : %$(EXEEXT) ${REPEAT} … … 825 828 +make mutex.csv 826 829 -+make mutex.diff.csv 827 +make s ignal.csv828 -+make s ignal.diff.csv830 +make schedint.csv 831 -+make schedint.diff.csv 829 832 @DOifskipcompile@ 830 833 cat compile.csv … … 837 840 cat mutex.csv 838 841 -cat mutex.diff.csv 839 cat s ignal.csv840 -cat s ignal.diff.csv842 cat schedint.csv 843 -cat schedint.diff.csv 841 844 842 845 compile.csv: … … 872 875 $(srcdir)/fixcsv.sh $@ 873 876 874 s ignal.csv:875 echo "s ignal-1,signal-2,waitfor-1,waitfor-2" > $@876 +make s ignal-cfa1.runquiet >> $@ && echo -n ',' >> $@877 +make s ignal-cfa2.runquiet >> $@ && echo -n ',' >> $@878 +make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@879 +make waitfor-cfa2.runquiet >> $@877 schedint.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 >> $@ 880 883 $(srcdir)/fixcsv.sh $@ 881 884 … … 935 938 echo "#!/bin/sh" > a.out 936 939 echo "nodejs $(srcdir)/ctxswitch/node_cor.js" >> a.out 940 chmod a+x a.out 941 942 ctxswitch-nodejs_await$(EXEEXT): 943 echo "#!/bin/sh" > a.out 944 echo "nodejs $(srcdir)/ctxswitch/node_await.js" >> a.out 937 945 chmod a+x a.out 938 946 … … 989 997 chmod a+x a.out 990 998 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): 999 schedint$(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 1008 schedint-cfa1$(EXEEXT): 1009 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa1.cfa 1010 1011 schedint-cfa2$(EXEEXT): 1012 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa2.cfa 1013 1014 schedint-cfa4$(EXEEXT): 1015 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedint/cfa4.cfa 1016 1017 schedint-upp$(EXEEXT): 1004 1018 $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedint/upp.cc 1005 1019 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): 1020 schedint-rust$(EXEEXT): 1016 1021 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/schedint/rust.rs 1017 1022 1018 s ignal-java$(EXEEXT):1023 schedint-java$(EXEEXT): 1019 1024 $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java 1020 1025 echo "#!/bin/sh" > a.out … … 1022 1027 chmod a+x a.out 1023 1028 1024 waitfor$(EXEEXT) : \ 1025 waitfor-cfa1.run \ 1026 waitfor-cfa2.run \ 1027 waitfor-cfa4.run \ 1028 waitfor-upp.run 1029 1030 waitfor-upp$(EXEEXT): 1029 schedint-pthread$(EXEEXT): 1030 $(BENCH_V_CC)$(COMPILE) $(srcdir)/schedint/pthreads.c 1031 1032 schedext$(EXEEXT) : \ 1033 schedext-cfa1.run \ 1034 schedext-cfa2.run \ 1035 schedext-cfa4.run \ 1036 schedext-upp.run \ 1037 schedext-goroutine.run 1038 1039 schedext-cfa1$(EXEEXT): 1040 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa1.cfa 1041 1042 schedext-cfa2$(EXEEXT): 1043 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa2.cfa 1044 1045 schedext-cfa4$(EXEEXT): 1046 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/schedext/cfa4.cfa 1047 1048 schedext-upp$(EXEEXT): 1031 1049 $(BENCH_V_UPP)$(UPPCOMPILE) $(srcdir)/schedext/upp.cc 1032 1050 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 1051 schedext-goroutine$(EXEEXT): 1052 $(BENCH_V_GOC)go build -o a.out $(srcdir)/schedext/goroutine.go 1041 1053 1042 1054 creation$(EXEEXT) : \ 1055 creation-cfa_generator.run \ 1043 1056 creation-cfa_coroutine.run \ 1044 1057 creation-cfa_coroutine_eager.run \ … … 1053 1066 creation-pthread.run 1054 1067 1068 creation-cfa_generator$(EXEEXT): 1069 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_gen.cfa 1070 1055 1071 creation-cfa_coroutine$(EXEEXT): 1056 1072 $(BENCH_V_CFA)$(CFACOMPILE) $(srcdir)/creation/cfa_cor.cfa … … 1084 1100 $(BENCH_V_RUSTC)rustc -C opt-level=3 -o a.out $(srcdir)/creation/rust_thrd.rs 1085 1101 1086 creation-java $(EXEEXT):1102 creation-java_thread$(EXEEXT): 1087 1103 $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java 1088 1104 echo "#!/bin/sh" > a.out -
benchmark/schedext/cfa1.cfa
r09f357ec r4f7b418 6 6 #include "../bench.h" 7 7 8 volatile int go = 0;9 10 8 monitor M {} m1; 11 9 12 10 void __attribute__((noinline)) call( M & mutex p1 ) {} 13 14 11 void __attribute__((noinline)) wait( M & mutex p1 ) { 15 go = 1;16 12 for ( times ) { 17 13 waitfor( call : p1 ); 18 14 } 19 go = 0;20 15 } 21 16 22 17 thread T {}; 23 18 void main( T & ) { 24 while ( go == 0 ) { yield(); }25 19 BENCH( 26 while ( go == 1) { call( m1 ); },20 for ( times ) { call( m1 ); }, 27 21 result 28 22 ) -
benchmark/schedext/cfa2.cfa
r09f357ec r4f7b418 4 4 #include <stdio.h> 5 5 6 #include "bench.h" 7 8 volatile int go = 0; 6 #include "../bench.h" 9 7 10 8 monitor M {} m1, m2; 11 9 12 10 void __attribute__((noinline)) call( M & mutex p1, M & mutex p2 ) {} 13 14 11 void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2 ) { 15 go = 1;16 12 for ( times ) { 17 13 waitfor( call : p1, p2 ); 18 14 } 19 go = 0;20 15 } 21 22 16 thread T {}; 23 17 void main( T & ) { 24 while( go == 0 ) { yield(); }25 18 BENCH( 26 while ( go == 1 ) { call( m1, m2 ); }, 19 for ( times ) { 20 call( m1, m2 ); 21 }, 27 22 result 28 23 ) -
benchmark/schedext/cfa4.cfa
r09f357ec r4f7b418 4 4 #include <stdio.h> 5 5 6 #include "bench.h" 7 8 volatile int go = 0; 6 #include "../bench.h" 9 7 10 8 monitor M {} m1, m2, m3, m4; 11 9 12 10 void __attribute__((noinline)) call( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) {} 13 14 11 void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) { 15 go = 1;16 12 for ( times ) { 17 13 waitfor( call : p1, p2, p3, p4 ); 18 14 } 19 go = 0;20 15 } 21 22 16 thread T {}; 23 17 void main( T & ) { 24 while( go == 0 ) { yield(); }25 18 BENCH( 26 while( go == 1 ) { call( m1, m2, m3, m4 ); }, 19 for ( times ) { 20 call( m1, m2, m3, m4 ); 21 }, 27 22 result 28 23 ) -
benchmark/schedext/upp.cc
r09f357ec r4f7b418 3 3 #include "bench.h" 4 4 5 volatile int go = 0;6 7 5 _Monitor M { 8 6 public: 9 7 void __attribute__((noinline)) call() {} 10 11 int __attribute__((noinline)) wait() { 12 go = 1; 8 void __attribute__((noinline)) wait() { 13 9 for ( size_t i = 0; i < times; i++ ) { 14 10 _Accept(call); 15 11 } 16 go = 0;17 return 0;18 12 } 19 13 } m; … … 21 15 _Task T { 22 16 void main() { 23 while ( go == 0 ) { yield(); }24 17 BENCH( 25 while ( go == 1 ) { m.call(); }, 18 for ( size_t i = 0; i < times; i++ ) { 19 m.call(); 20 }, 26 21 result 27 22 ) … … 33 28 BENCH_START() 34 29 T t; 35 returnm.wait();30 m.wait(); 36 31 } 37 32 -
benchmark/schedint/JavaThread.java
r09f357ec r4f7b418 63 63 synchronized(m) { 64 64 s.start(); 65 while( ! Monitor.go ) {65 while( ! Monitor.go ) { // waiter must start first 66 66 Thread.yield(); 67 67 } -
benchmark/schedint/cfa1.cfa
r09f357ec r4f7b418 7 7 8 8 volatile int go = 0; 9 9 10 condition c; 10 11 monitor M {} m1; … … 13 14 signal( c ); 14 15 } 15 16 16 void __attribute__((noinline)) wait( M & mutex p1 ) { 17 17 go = 1; … … 19 19 wait( c ); 20 20 } 21 go = 0;22 21 } 23 22 24 23 thread T {}; 25 24 void main( T & ) { 26 while ( go == 0 ) { yield(); } 25 while ( go == 0 ) { yield(); } // waiter must start first 27 26 BENCH( 28 while ( go == 1) { call( m1 ); },27 for ( times ) { call( m1 ); }, 29 28 result 30 29 ) -
benchmark/schedint/cfa2.cfa
r09f357ec r4f7b418 7 7 8 8 volatile int go = 0; 9 9 10 condition c; 10 11 monitor M {} m1, m2; … … 13 14 signal( c ); 14 15 } 15 16 16 void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2 ) { 17 17 go = 1; … … 19 19 wait( c ); 20 20 } 21 go = 0;22 21 } 23 22 24 23 thread T {}; 25 24 void main( T & ) { 26 while ( go == 0 ) { yield(); } 25 while ( go == 0 ) { yield(); } // waiter must start first 27 26 BENCH( 28 while ( go == 1) { call( m1, m2 ); },27 for ( times ) { call( m1, m2 ); }, 29 28 result 30 29 ) -
benchmark/schedint/cfa4.cfa
r09f357ec r4f7b418 4 4 #include <stdio.h> 5 5 6 #include " bench.h"6 #include "../bench.h" 7 7 8 8 volatile int go = 0; 9 9 10 condition c; 10 11 monitor M {} m1, m2, m3, m4; … … 13 14 signal( c ); 14 15 } 15 16 16 void __attribute__((noinline)) wait( M & mutex p1, M & mutex p2, M & mutex p3, M & mutex p4 ) { 17 17 go = 1; … … 19 19 wait( c ); 20 20 } 21 go = 0;22 21 } 23 22 24 23 thread T {}; 25 24 void main( T & ) { 26 while ( go == 0 ) { yield(); } 25 while ( go == 0 ) { yield(); } // waiter must start first 27 26 BENCH( 28 while ( go == 1) { call( m1, m2, m3, m4 ); },27 for ( times ) { call( m1, m2, m3, m4 ); }, 29 28 result 30 29 ) -
benchmark/schedint/pthreads.c
r09f357ec r4f7b418 6 6 volatile int go = 0; 7 7 8 pthread_mutex_t m; 8 9 pthread_cond_t c; 9 pthread_mutex_t m;10 10 11 11 void __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 ); 15 15 } 16 16 17 int__attribute__((noinline)) wait() {17 void __attribute__((noinline)) wait() { 18 18 pthread_mutex_lock(&m); 19 19 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 27 void * 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 20 30 BENCH( 21 for (size_t i = 0; i < times; i++) { 22 pthread_cond_wait(&c, &m); 23 }, 31 while ( go == 1 ) { call(); }, 24 32 result 25 33 ) 26 34 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(); }35 35 return NULL; 36 36 } … … 39 39 BENCH_START() 40 40 pthread_t thread; 41 if ( pthread_create(&thread, NULL, thread_main, NULL) < 0) {41 if ( pthread_create( &thread, NULL, thread_main, NULL ) < 0 ) { 42 42 perror( "failure" ); 43 43 return 1; 44 44 } 45 45 wait(); 46 if ( pthread_join( thread, NULL) < 0) {46 if ( pthread_join( thread, NULL ) < 0 ) { 47 47 perror( "failure" ); 48 48 return 1; -
benchmark/schedint/rust.rs
r09f357ec r4f7b418 18 18 19 19 let th = thread::spawn( move || { 20 while *m2.lock().unwrap() == 0 { 20 while *m2.lock().unwrap() == 0 { // waiter must start first 21 21 thread::yield_now(); 22 22 } -
benchmark/schedint/upp.cc
r09f357ec r4f7b418 11 11 cond.signal(); 12 12 } 13 void __attribute__((noinline)) wait() { 14 go = 1; 15 for ( size_t i = 0; i < times; i++ ) { 16 cond.wait(); 17 } 18 } 19 } m; 13 20 14 int __attribute__((noinline)) wait() { 15 go = 1; 21 _Task T { 22 void main() { 23 while ( go == 0 ) { yield(); } // waiter must start first 16 24 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(); 19 27 }, 20 28 result 21 29 ) 22 30 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 35 31 } 36 32 }; … … 39 35 BENCH_START() 40 36 T t; 41 returnm.wait();37 m.wait(); 42 38 } 43 39
Note:
See TracChangeset
for help on using the changeset viewer.