Issue #13552 has been updated by normalperson (Eric Wong).


pull request:

The following changes since commit 6ad7c53ba9fb688ea1070a2319a64f0cc32c08e8:

  test/thread: relax internal implementation check in error message (2017-05-09 19:52:10 +0000)

are available in the git repository at:

  git://80x24.org/ruby.git sync-list

for you to fetch changes up to 4d77449e1c832d4398cdc07ef10b57e55bea1b81:

  thread_sync.c: rewrite the rest using using ccan/list (2017-05-09 20:42:50 +0000)

----------------------------------------------------------------
Eric Wong (2):
      thread_sync.c: rename mutex_waiter struct to sync_waiter
      thread_sync.c: rewrite the rest using using ccan/list

 thread_sync.c | 487 ++++++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 324 insertions(+), 163 deletions(-)


----------------------------------------
Feature #13552: [PATCH 0/2] reimplement ConditionVariable, Queue, SizedQueue using ccan/list
https://bugs.ruby-lang.org/issues/13552#change-64734

* Author: normalperson (Eric Wong)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
```
The performance improvement increases as the number of waiters
increases, due to avoiding the O(n) behavior of rb_ary_delete on
the waiting thread.  Uncontended queues and condition variables
performance is not altered significantly.

Function entry cost is slightly increased for ConditionVariable,
since the data pointer is separately allocated and not embedded
into the RVALUE slot.

name                  |trunk  |built
----------------------|------:|------:
vm_thread_condvar1    |  0.858|  0.858
vm_thread_condvar2    |  1.003|  0.804
vm_thread_queue       |  0.131|  0.129
vm_thread_sized_queue |  0.265|  0.251
vm_thread_sized_queue2|  0.892|  0.859
vm_thread_sized_queue3|  0.879|  0.845
vm_thread_sized_queue4|  0.599|  0.486

Speedup ratio: compare with the result of `trunk' (greater is better)

name                  |built
----------------------|------:
vm_thread_condvar1    |  0.999
vm_thread_condvar2    |  1.246
vm_thread_queue       |  1.020
vm_thread_sized_queue |  1.057
vm_thread_sized_queue2|  1.039
vm_thread_sized_queue3|  1.041
vm_thread_sized_queue4|  1.233
```


---Files--------------------------------
0001-thread_sync.c-rename-mutex_waiter-struct-to-sync_wai.patch (1.63 KB)
0002-thread_sync.c-rewrite-the-rest-using-using-ccan-list.patch (21.3 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>