| 著作一覧 |
単純に(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'にしてて、なんで変な表示になるのか不思議におもったり。
ジェズイットを見習え |