Skip to content
  • Eric Wong's avatar
    e552afc3
    File#rename releases GVL · e552afc3
    Eric Wong authored
    rename(2) requires two pathname resolution operations which can
    take considerable time on slow filesystems, release the GVL so
    operations on other threads may proceed.
    
    On fast, local filesystems, this change results in some slowdown
    as shown by the new benchmark.  I consider the performance trade
    off acceptable as cases are avoided.
    
    benchmark results:
    minimum results in each 3 measurements.
    Execution time (sec)
    name	trunk	built
    file_rename	2.648	2.804
    
    Speedup ratio: compare with the result of `trunk' (greater is better)
    name	built
    file_rename	0.944
    
    * file.c (no_gvl_rename): new function
      (rb_file_s_rename): release GVL for renames
    * benchmark/bm_file_rename.rb: new benchmark
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    e552afc3
    File#rename releases GVL
    Eric Wong authored
    rename(2) requires two pathname resolution operations which can
    take considerable time on slow filesystems, release the GVL so
    operations on other threads may proceed.
    
    On fast, local filesystems, this change results in some slowdown
    as shown by the new benchmark.  I consider the performance trade
    off acceptable as cases are avoided.
    
    benchmark results:
    minimum results in each 3 measurements.
    Execution time (sec)
    name	trunk	built
    file_rename	2.648	2.804
    
    Speedup ratio: compare with the result of `trunk' (greater is better)
    name	built
    file_rename	0.944
    
    * file.c (no_gvl_rename): new function
      (rb_file_s_rename): release GVL for renames
    * benchmark/bm_file_rename.rb: new benchmark
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading