著作一覧 |
単純に(Windows2000より前の)GUIDをサロゲートキーとして利用すると時刻パートが先頭に来るためにインサートしていくと幾ら2分木を使っていてもどんどん遅くなるというワナ。(もちろん数万とか数10万という単位の話)
最後の6バイトを先頭に持ってくるとかすると結構良くなったり。
でも、Windows2000からはそういうことを気にしなくても良くなったみたいだ。結構、散らばっているように見える。
と、サロゲートキーという言葉を使ってみたくて書いたりして。
ちなみに、サロゲートキーの話は、るいもさんのとこから。
#!/usr/bin/ruby -Ks require 'Win32API' createGuid = Win32API.new 'ole32', 'CoCreateGuid', ['P'], 'V' guid2str = Win32API.new 'ole32', 'StringFromGUID2', ['P', 'P', 'L' ], 'L' lpguid = ' ' * 16 createGuid.call lpguid lpprtable = ' ' * 128 len = guid2str.Call lpguid, lpprtable, 64 s = lpprtable[0, len * 2] print s.gsub("\0", '')最初gsubの第1パラメータを'\0'にしてて、なんで変な表示になるのか不思議におもったり。
ジェズイットを見習え |