mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 21:14:23 +02:00

This improve the conversion speed several times faster than before. ``` RUBYLIB= BUNDLER_ORIG_RUBYLIB= /home/mrkn/.rbenv/versions/3.0.0/bin/ruby -v -S benchmark-driver /home/mrkn/src/github.com/ruby/bigdecimal/benchmark/from_float.yml ruby 3.0.0p0 (2020-12-25 revision95aff21468
) [x86_64-linux] Calculating ------------------------------------- bigdecimal 3.0.0 master flt_e0 156.400k 783.356k i/s - 100.000k times in 0.639388s 0.127656s flt_ep10 158.640k 777.978k i/s - 100.000k times in 0.630359s 0.128538s flt_ep100 101.676k 504.259k i/s - 100.000k times in 0.983512s 0.198311s flt_em10 103.439k 726.339k i/s - 100.000k times in 0.966751s 0.137677s flt_em100 79.675k 651.446k i/s - 100.000k times in 1.255095s 0.153505s Comparison: flt_e0 master: 783355.6 i/s bigdecimal 3.0.0: 156399.5 i/s - 5.01x slower flt_ep10 master: 777977.6 i/s bigdecimal 3.0.0: 158639.7 i/s - 4.90x slower flt_ep100 master: 504259.4 i/s bigdecimal 3.0.0: 101676.5 i/s - 4.96x slower flt_em10 master: 726338.6 i/s bigdecimal 3.0.0: 103439.2 i/s - 7.02x slower flt_em100 master: 651446.3 i/s bigdecimal 3.0.0: 79675.3 i/s - 8.18x slower ```5bdaedd530
9bfff57f90
d071a0abbb
17 lines
351 B
C
17 lines
351 B
C
#include <ruby/ruby.h>
|
|
|
|
#ifdef HAVE_RUBY_ATOMIC_H
|
|
# include <ruby/atomic.h>
|
|
#endif
|
|
|
|
#ifdef RUBY_ATOMIC_PTR_CAS
|
|
# define ATOMIC_PTR_CAS(var, old, new) RUBY_ATOMIC_PTR_CAS(var, old, new)
|
|
#endif
|
|
|
|
#undef strtod
|
|
#define strtod BigDecimal_strtod
|
|
#undef dtoa
|
|
#define dtoa BigDecimal_dtoa
|
|
#undef hdtoa
|
|
#define hdtoa BigDecimal_hdtoa
|
|
#include "missing/dtoa.c"
|