トップ «前の日記(2005-01-06) 最新 次の日記(2005-01-08)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2005-01-07

_ GUIDの恐怖

単純に(Windows2000より前の)GUIDをサロゲートキーとして利用すると時刻パートが先頭に来るためにインサートしていくと幾ら2分木を使っていてもどんどん遅くなるというワナ。(もちろん数万とか数10万という単位の話)

最後の6バイトを先頭に持ってくるとかすると結構良くなったり。

でも、Windows2000からはそういうことを気にしなくても良くなったみたいだ。結構、散らばっているように見える。

と、サロゲートキーという言葉を使ってみたくて書いたりして。

ちなみに、サロゲートキーの話は、るいもさんのとこから。

_ GUIDの文字列版を生成(というか表示)するrubyのスクリプト

#!/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'にしてて、なんで変な表示になるのか不思議におもったり。

2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|

ジェズイットを見習え