stm 0.4.0

Implementation of Software transactional memory. Allows composable atomic operations.
Documentation


Old (log has variants):
running 6 tests
test bench_std_channel          ... bench:      71,395 ns/iter (+/- 10,159)
test bench_std_sync_channel_1   ... bench:   5,131,824 ns/iter (+/- 921,575)
test bench_std_sync_channel_200 ... bench:     511,894 ns/iter (+/- 36,919)
test bench_stm_bqueue_1         ... bench:   6,281,788 ns/iter (+/- 921,006)
test bench_stm_bqueue_200       ... bench:   2,265,467 ns/iter (+/- 137,836)
test bench_stm_queue            ... bench:   1,060,941 ns/iter (+/- 375,280)

Two logs (with spinlock):

test bench_std_channel          ... bench:      72,504 ns/iter (+/- 13,690)
test bench_std_sync_channel_1   ... bench:   5,132,508 ns/iter (+/- 765,185)
test bench_std_sync_channel_200 ... bench:     488,082 ns/iter (+/- 75,600)
test bench_stm_bqueue_1         ... bench:   4,019,708 ns/iter (+/- 218,082)
test bench_stm_bqueue_200       ... bench:   2,650,210 ns/iter (+/- 141,240)
test bench_stm_queue            ... bench:   1,469,521 ns/iter (+/- 370,805)


Two logs (with blocking):
test bench_std_channel          ... bench:      70,581 ns/iter (+/- 5,466)
test bench_std_sync_channel_1   ... bench:   4,969,502 ns/iter (+/- 596,852)
test bench_std_sync_channel_200 ... bench:     243,690 ns/iter (+/- 19,166)
test bench_stm_bqueue_1         ... bench:   6,709,742 ns/iter (+/- 1,072,177)
test bench_stm_bqueue_200       ... bench:   2,450,710 ns/iter (+/- 93,558)
test bench_stm_queue            ... bench:   1,580,387 ns/iter (+/- 524,128)


with hashmaps (fnv hasher):
running 6 tests
test bench_std_channel          ... bench:      70,200 ns/iter (+/- 5,025)
test bench_std_sync_channel_1   ... bench:   4,888,953 ns/iter (+/- 666,706)
test bench_std_sync_channel_200 ... bench:     490,010 ns/iter (+/- 40,641)
test bench_stm_bqueue_1         ... bench:   6,641,280 ns/iter (+/- 711,804)
test bench_stm_bqueue_200       ... bench:   2,931,430 ns/iter (+/- 204,980)
test bench_stm_queue            ... bench:   1,555,375 ns/iter (+/- 296,769)

revert to two logs
test bench_std_channel          ... bench:      69,467 ns/iter (+/- 3,874)
test bench_std_sync_channel_1   ... bench:   5,016,061 ns/iter (+/- 557,420)
test bench_std_sync_channel_200 ... bench:     348,172 ns/iter (+/- 52,110)
test bench_stm_bqueue_1         ... bench:   6,920,528 ns/iter (+/- 734,555)
test bench_stm_bqueue_200       ... bench:   2,521,554 ns/iter (+/- 73,592)
test bench_stm_queue            ... bench:   1,447,575 ns/iter (+/- 363,972)