[#58730] [ruby-trunk - misc #9188][Open] r43870 make benchmark/bm_so_k_nucleotide.rb slow — "authorNari (Narihiro Nakamura)" <authorNari@...>
17 messages
2013/12/01
[#58955] [ruby-trunk - misc #9188] r43870 make benchmark/bm_so_k_nucleotide.rb slow
— "tmm1 (Aman Gupta)" <ruby@...1.net>
2013/12/08
[#59494] Re: [ruby-trunk - misc #9188] r43870 make benchmark/bm_so_k_nucleotide.rb slow
— Eric Wong <normalperson@...>
2014/01/03
Btw, I took some time to work on this further. Only _very_ lightly
[#59574] Re: [ruby-trunk - misc #9188] r43870 make benchmark/bm_so_k_nucleotide.rb slow
— SASADA Koichi <ko1@...>
2014/01/06
(2014/01/03 12:49), Eric Wong wrote:
[#59575] Re: [ruby-trunk - misc #9188] r43870 make benchmark/bm_so_k_nucleotide.rb slow
— Eric Wong <normalperson@...>
2014/01/06
SASADA Koichi <ko1@atdot.net> wrote:
[#59578] Re: [ruby-trunk - misc #9188] r43870 make benchmark/bm_so_k_nucleotide.rb slow
— SASADA Koichi <ko1@...>
2014/01/06
(2014/01/06 15:49), Eric Wong wrote:
[#58797] [ruby-trunk - Bug #9198][Open] Segfault in TestException#test_machine_stackoverflow — "vo.x (Vit Ondruch)" <v.ondruch@...>
11 messages
2013/12/02
[#58809] [ruby-trunk - Bug #9202][Assigned] Array#uniq freezes duplicate strings — "drbrain (Eric Hodel)" <drbrain@...7.net>
7 messages
2013/12/03
[#58810] [ruby-trunk - Bug #9202] Array#uniq freezes duplicate strings
— "drbrain (Eric Hodel)" <drbrain@...7.net>
2013/12/03
[#58817] [ANN] Developer Meeting Moved to 2013-12-05 — Zachary Scott <e@...>
Greetings!
4 messages
2013/12/03
[#58866] [ruby-trunk - misc #9215][Open] Maintenance Policy for Future Releases (2.1.0 & beyond) — "hone (Terence Lee)" <hone02@...>
17 messages
2013/12/05
[#58914] [ruby-trunk - Bug #9223][Open] Hash#reject!.size does not reflect changes to the hash — "dmarcotte (Daniel Marcotte)" <dmarcotte@...>
9 messages
2013/12/06
[#59095] [ruby-trunk - Bug #9248][Open] Struct methods, segmentation fault — "Soilent (H H)" <konstantin@...>
9 messages
2013/12/13
[#59110] [ruby-trunk - Bug #9249][Open] Ruby incorrectly inspects opaque libc jmp_buf for pointers to heap during GC. — "carlos@... (Carlos O'Donell)" <carlos@...>
8 messages
2013/12/14
[#59122] [ruby-trunk - Bug #9251][Open] ! operator has lower precedence than = in an assignment expression — "rits (First Last)" <redmine@...>
26 messages
2013/12/15
[#59198] [ruby-trunk - Bug #9262][Open] global_method_cache should be configurable or grow automatically — "tmm1 (Aman Gupta)" <ruby@...1.net>
28 messages
2013/12/19
[#59518] [ruby-trunk - Bug #9262] global_method_cache should be configurable or grow automatically
— "sam.saffron (Sam Saffron)" <sam.saffron@...>
2014/01/03
[#60145] [ruby-trunk - Bug #9262] global_method_cache should be configurable or grow automatically
— normalperson@...
2014/01/27
Issue #9262 has been updated by Eric Wong.
[#61218] [ruby-trunk - Bug #9262] global_method_cache should be configurable or grow automatically
— nobu@...
2014/03/02
Issue #9262 has been updated by Nobuyoshi Nakada.
[#59209] [ruby-trunk - Bug #9264][Open] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — "spastorino (Santiago Pastorino)" <santiago@...>
15 messages
2013/12/19
[#59211] [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64
— "zzak (Zachary Scott)" <e@...>
2013/12/19
[#59212] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64
— Santiago Pastorino <spastorino@...>
2013/12/19
zzak, make distclean is the first thing I've ran. Read the gist again :),
[#59213] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64
— Zachary Scott <e@...>
2013/12/19
Sorry I missed the gist, can you try building outside of $srcdir?
[#59214] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64
— Santiago Pastorino <spastorino@...>
2013/12/19
It works if I do ...
[#59215] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64
— Zachary Scott <e@...>
2013/12/19
I've been using the following:
[#59216] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64
— Santiago Pastorino <spastorino@...>
2013/12/20
It works but I'm missing to link against homebrew's gdbm, libyaml and
[#59218] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64
— Santiago Pastorino <spastorino@...>
2013/12/20
Now I did ...
[#59222] [ruby-trunk - Bug #9266][Open] dead links to rubyforge — "znz (Kazuhiro NISHIYAMA)" <redmine@...>
7 messages
2013/12/20
[#59260] [ruby-trunk - Feature #9278][Open] Magic comment "immutable: string" makes "literal".freeze the default for that file — "colindkelley (Colin Kelley)" <colin@...>
12 messages
2013/12/22
[#59306] [ruby-trunk - Bug #9295][Open] `Exception#backtrace_locations` returns `nil` — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>
4 messages
2013/12/24
[#59312] [ANN] Ruby 2.1.0 is released — "NARUSE, Yui" <naruse@...>
Hi,
6 messages
2013/12/25
[#59326] Re: [ANN] Ruby 2.1.0 is released
— Rodrigo Rosenfeld Rosas <rr.rosas@...>
2013/12/26
I can't compile it on Debian sid (using RVM):
[#59316] [ruby-trunk - Bug #9300][Open] YAML Regression Concerning Escaping of Strings — "schneems (Richard Schneeman)" <richard.schneeman@...>
9 messages
2013/12/25
[#59359] BigDecimal division in Ruby 2.1 — Andre Bernardes <abernardes@...>
Hi there,
5 messages
2013/12/28
[#59398] [ruby-trunk - Bug #9321][Open] rb_mod_const_missing does not generate a c-return event — "drkaes (Stefan Kaes)" <stkaes@...>
41 messages
2013/12/30
[#59470] [ruby-trunk - Bug #9321] rb_mod_const_missing does not generate a c-return event
— "drkaes (Stefan Kaes)" <stkaes@...>
2014/01/02
[#59408] [ruby-trunk - Feature #9323][Open] IO#writev — "Glass_saga (Masaki Matsushita)" <glass.saga@...>
11 messages
2013/12/30
[#59429] [ruby-trunk - Feature #9330][Open] [PATCH 0/3] avoid redundant fcntl/fstat syscalls for cloexec sockets — "normalperson (Eric Wong)" <normalperson@...>
10 messages
2013/12/31
[#59857] [ruby-trunk - Feature #9330] [PATCH 0/3] avoid redundant fcntl/fstat syscalls for cloexec sockets
— akr@...
2014/01/18
Issue #9330 has been updated by Akira Tanaka.
[ruby-core:58955] [ruby-trunk - misc #9188] r43870 make benchmark/bm_so_k_nucleotide.rb slow
From:
"tmm1 (Aman Gupta)" <ruby@...1.net>
Date:
2013-12-08 01:56:36 UTC
List:
ruby-core #58955
Issue #9188 has been updated by tmm1 (Aman Gupta).
@charliesome helped me with my compiler patch. It adds a new opt_aset_str instruction that handles the string literal hash_aset case (hsh["abc"]=).
Unfortunately, it did not make a big difference in long-lived strings generated in our app. The patch follows for posterity.
diff --git a/compile.c b/compile.c
index 812f692..1cc038c 100644
--- a/compile.c
+++ b/compile.c
@@ -5290,6 +5290,24 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
break;
}
case NODE_ATTRASGN:{
+ if (node->nd_mid == idASET &&
+ node->nd_recv != (NODE *)1 &&
+ node->nd_args &&
+ nd_type(node->nd_args) == NODE_ARRAY &&
+ node->nd_args->nd_alen == 2 &&
+ nd_type(node->nd_args->nd_head) == NODE_STR)
+ {
+ COMPILE(ret, "recv", node->nd_recv);
+ COMPILE(ret, "value", node->nd_args->nd_next->nd_head);
+ ADD_INSN2(ret, line, opt_aset_str,
+ new_callinfo(iseq, idASET, 2, 0, 0),
+ rb_fstring(node->nd_args->nd_head->nd_lit));
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+
DECL_ANCHOR(recv);
DECL_ANCHOR(args);
VALUE flag = 0;
diff --git a/hash.c b/hash.c
index 1321b83..8bbd569 100644
--- a/hash.c
+++ b/hash.c
@@ -2368,7 +2368,7 @@ static VALUE rb_hash_compare_by_id_p(VALUE hash);
* h1["a"] #=> 100
* h1.compare_by_identity
* h1.compare_by_identity? #=> true
- * h1["a"] #=> nil # different objects.
+ * h1["a".dup] #=> nil # different objects.
* h1[:c] #=> "c" # same symbols are all same.
*
*/
diff --git a/insns.def b/insns.def
index 63a36b3..dcecfdc 100644
--- a/insns.def
+++ b/insns.def
@@ -1903,6 +1903,27 @@ opt_aset
/**
@c optimize
+ @e recv[str] = set
+ @j 最適化された recv[str] = set。
+ */
+DEFINE_INSN
+opt_aset_str
+(CALL_INFO ci, VALUE key)
+(VALUE recv, VALUE val)
+(VALUE val)
+{
+ if (!SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash && BASIC_OP_UNREDEFINED_P(BOP_ASET, HASH_REDEFINED_OP_FLAG)) {
+ rb_hash_aset(recv, key, val);
+ } else {
+ PUSH(recv);
+ PUSH(rb_str_resurrect(key));
+ PUSH(val);
+ CALL_SIMPLE_METHOD(recv);
+ }
+}
+
+/**
+ @c optimize
@e optimized length
@j 最適化された recv.length()。
*/
diff --git a/test/ruby/test_hash.rb b/test/ruby/test_hash.rb
index 4244b86..ef606bf 100644
--- a/test/ruby/test_hash.rb
+++ b/test/ruby/test_hash.rb
@@ -209,6 +209,13 @@ class TestHash < Test::Unit::TestCase
assert_equal(256, h[z])
end
+ def test_ASET_fstring_key
+ a, b = {}, {}
+ a["abc"] = 1
+ b["abc"] = 1
+ assert_same a.keys[0], b.keys[0]
+ end
+
def test_NEWHASH_fstring_key
a = {"ABC" => :t}
b = {"ABC" => :t}
@@ -897,7 +904,7 @@ class TestHash < Test::Unit::TestCase
h = @cls[]
h.compare_by_identity
h["a"] = 1
- h["a"] = 2
+ h["a".dup] = 2
assert_equal(["a",1], h.assoc("a"))
end
----------------------------------------
misc #9188: r43870 make benchmark/bm_so_k_nucleotide.rb slow
https://bugs.ruby-lang.org/issues/9188#change-43505
Author: authorNari (Narihiro Nakamura)
Status: Closed
Priority: Normal
Assignee: tmm1 (Aman Gupta)
Category: core
Target version: current: 2.1.0
Hi.
I think r43870 make benchmark/bm_so_k_nucleotide.rb slow.
r43870
% time ./miniruby ./benchmark/bm_so_k_nucleotide.rb
./miniruby ./benchmark/bm_so_k_nucleotide.rb 1.70s user 0.01s system 99% cpu 1.718 total
r43869
% time ./miniruby ./benchmark/bm_so_k_nucleotide.rb
./miniruby ./benchmark/bm_so_k_nucleotide.rb 1.52s user 0.03s system 99% cpu 1.559 total
--
http://bugs.ruby-lang.org/