[#43767] UDP通信時のエラー検出 — "中田雅美" <mimiger2007@...>
中田(雅)と申します。
小西 弘将です。
In message <6DC7D411CB0FB4konishi@raax.co.jp>
中田(雅)です。
In message <407af920708010215n6cb6a4a7o32a164da7d0b6901@mail.gmail.com> 2007-08-01T18:15+0900,
[#43777] gsub! で定数を書き換えられてしまう — 古川大輔 <mogya99@...>
はじめまして。もぎゃ と申します。
[#43781] WEB公開されるML投稿記事について — REI OKAMOTO <okamoto@...>
昨日投稿した岡本です。
[#43796] mod_ruby 環境の Rails での日本語文字列の truncate — "IKEDA Katsumi" <ikedak@...8.so-net.ne.jp>
池田と申します。
[#43806] Procの仕様について — "SHIMADA Koji" <snoozer.05@...>
しまだです。
[#43809] 配列についての質問 — "142QN4969@..." <ohrsts@...>
小原です。御世話になっています。
[#43815] 日本Rubyの会のHPでHikiError — "SHIMADA Koji" <snoozer.05@...>
しまだです。
[#43846] 質問:シェルスクリプトにすると uninitialized constant DATA — sw@...
環境は Windows XP
なかだです。
コメント、ありがとうございます。
[#43857] Hashへの生成順は保障されないのか? — Hiroshi Kasamatsu <qqmn89yb9@...>
こんにちは、笠松と申します。
Hiroshi Kasamatsu wrote:
皆さん、早速のレスありがとうございます。
Hiroshi Kasamatsu wrote:
Urabeさん、笠松です。レスありがとうございます。
Hiroshi Kasamatsu wrote:
cuzic です。
cuzic wrote:
In article <46C9E7BB.4060100@ruby-lang.org>,
おお、田中さんを満足させる説明ってのは結構ハードル高そうだな。
# 出遅れたので、レスすべきメールが判らなくなってしまったので、手近なのに
まつもと ゆきひろです
なかだです。
ささだです。
まつもと ゆきひろです
なかだです。
At Tue, 21 Aug 2007 13:59:43 +0900,
ささだです。
At Tue, 21 Aug 2007 19:29:11 +0900,
In article <86sl6dgikh.knu@iDaemons.org>,
In article <87zm0kaz60.fsf@fsij.org>,
Yuguiといいます。
まつもと ゆきひろです
ささだです。
[#43868] ruby1.8でssl通信@stmp/pop3 — "Tomo Matsumoto" <tomoyuki28jp@...>
松本と申します。
[#43923] [ANN] isi-1.1.3 released! — NISHIMATSU Takeshi <t_nissie@...>
西松と申します。
[#43939] Windows で正確なファイル名を取得するには — Five point Five <5.5@...>
Five point Five です。
[ruby-list:43922] Re: Hashへの生成順は保障されないのか?
阪口です。
In message <20070821141439.GA92126%saka@slis.tsukuba.ac.jp> 2007-08-21T23:14+0900,
Tetsuo Sakaguchi <saka@slis.tsukuba.ac.jp> wrote:
> PS. 時間がとれれば環境整えて自分でパッチを当ててみようかとも思いますが、、。
ちょっとためしたけど、単純に(ordered-hash抜きでは)適用できないので、
> このパッチ、rehashのメモリの割り当てが Calloc(=calloc) から、
> xrealloc に変更されていますね。
単純に Calloc -> xmalloc にしてみたもので、ベンチマークしてみました。
(diff は添付しておきます。エイやっと作ったので、ミスがあるかも。。)
見ればわかる通り、当たり前ですが全体として性能がそこそこ上がっています。
(clear が落ちているように見えるけど、この値だと測定誤差とか他負荷の
要因は無視できないし。。。もうちょっと長時間で計らないと。。)
ご参考まで。
個人的には、組み込みクラスは基本的な機能に絞っておいて、派生的な
機能を持たせる場合でも、速度や記憶使用量の増加はせいぜい数%程度までの
ものにしておいて欲しいと思いますが、、。
(awk の連想配列でも要素の追加順序は保存されませんし、、、。)
1.8.6-p36 のまま
user system total real
add to empty hash 1.150000 0.020000 1.170000 ( 1.177728)
add to hash with 100000 elements 1.950000 0.030000 1.980000 ( 1.978130)
each_key with 200000 elements 0.100000 0.000000 0.100000 ( 0.099460)
keys.sort_by.each, 200000 elements 2.350000 0.030000 2.380000 ( 2.373399)
delete 100000 times, non-existing key 0.060000 0.000000 0.060000 ( 0.062486)
delete 100000 times, existing keys 0.490000 0.000000 0.490000 ( 0.487005)
include? 100000 times, non-existing key 0.060000 0.000000 0.060000 ( 0.054519)
include? 100000 times, existing keys 0.400000 0.000000 0.400000 ( 0.401355)
clear hash with 100000 elements 0.020000 0.000000 0.020000 ( 0.022875)
rehash で、Calloc -> xmalloc したもの
user system total real
add to empty hash 0.960000 0.010000 0.970000 ( 0.978789)
add to hash with 100000 elements 1.680000 0.020000 1.700000 ( 1.692938)
each_key with 200000 elements 0.080000 0.000000 0.080000 ( 0.085035)
keys.sort_by.each, 200000 elements 1.610000 0.020000 1.630000 ( 1.629927)
delete 100000 times, non-existing key 0.050000 0.000000 0.050000 ( 0.047612)
delete 100000 times, existing keys 0.320000 0.000000 0.320000 ( 0.326661)
include? 100000 times, non-existing key 0.040000 0.000000 0.040000 ( 0.043253)
include? 100000 times, existing keys 0.380000 0.010000 0.390000 ( 0.373585)
clear hash with 100000 elements 0.040000 0.000000 0.040000 ( 0.047428)
--
阪口哲男@図書館情報メディア研究科.大学院.筑波大学
Tetsuo SAKAGUCHI.
Graduate School of Library, Information and Media Studies
University of Tsukuba, JAPAN.
Attachments (1)
--- ruby-1.8.6-p36-org/st.c 2007-02-13 08:01:19.000000000 +0900
+++ ruby-1.8.6-p36/st.c 2007-08-22 20:41:40.984776000 +0900
@@ -321,7 +321,9 @@
unsigned int hash_val;
new_num_bins = new_size(old_num_bins+1);
- new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*));
+ new_bins = (st_table_entry**)
+ xmalloc(new_num_bins * sizeof(st_table_entry*));
+ for (i = 0; i < new_num_bins; i++) new_bins[i] = 0;
for(i = 0; i < old_num_bins; i++) {
ptr = table->bins[i];