謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

2008-03-01から1ヶ月間の記事一覧

Glibcのmallocとjemalloc

glibcのmallocはptmallocを使っているらしい。これは、dlmallocをマルチスレッド化したものらしい。 jemallocはFreeBSDのmallocをベースにマルチプロセッサに適したようにしたものらしい。FreeBSDのmallocはphkmallocを書き直したものらしい。

Launchpad情報

TP

Launchpad newsより。 ファイルの公開機能ができたらしい。このおかげで耐消失性の高い場所ができるので、翻訳パネルもソースとの分離をする予定(ただgenerated from fooを書いてない自動生成ファイルを無くさないとなぁ)。 あとチーム単位のMLができたらし…

シゴフミ

以下ネタバレ含む。 全体としては良かった、が…。物語の大筋としてフミカがあるのはいいとして、展開が大筋を進めるだけに使われたり(4話)、死そのものについてのメタ的な何かが足りなかったりまとまってなかったり、意外な何かが無かったりと非常に残念な出…

ntzの別の形

作って使ってみたもののmysortではテーブル引きより遅くなるなぁ(実際のコードはこのとおりでは無いから単純比較はできないけど)。 !!ってどうなってるのか気になったのでアセンブラも調べてみた。 uint ntz(uint x){ if(!x) return 32; x = x&(-x); uint rv…

D言語での高速化の問題点

ローカル変数のalignに対応してない? (align付きのstructを使えばいいのだろうけど) インラインアセンブラを使った関数は-inlineを付けてもインライン化してくれない? インラインアセンブラはレジスタの自動割り当てが使えない。 gdcならgasとalways_inline…

言語に欲しい機能@バグチェック周り

splintやgccの-Wextraをもっと言語に落とせないのかなぁ。警告は所詮警告だし。 戻り値(もしくはout/ref)を使わないとエラーにする属性 基本型の制約 unused varianbleのエラーとunsed属性(gcc -Wallではしてくれるし__attribute*1もある。他は知らない。) d…

式テンプレートの問題点

式テンプレートの上にライブラリ作ろうとしたら重要な問題が発覚した。 関数の依存性を外すことができない。対応するにはオプティマイザ外さないといけないはず? 実装しようとしてみたら"Error: variable _N is used before initialization"。分け分からん。…

式テンプレートで関数合成

意図してなかったのに、こんなコードも通ることに気づいた。 writefln((_0+_1)(_0-_1,_0)(4,2)); ってことで、こんなコードも通る。 auto add = _0 + _1; auto sub = _0 - _1; writefln(add(sub(_1,_!(2)),_0)(2,3)); 関数合成ktkr。 f!(writefln)(f!((int a…

自作ソート続き

C言語に書き直してみた。__attributeとかgasとか使ってるのでgcc依存。 http://www4.pf-x.net/~nazodane/cgi-bin/index.cgi?mode=upload:show&name=sort2.c dmdとgccの最適化を比べようと思ったけど、Cのrandはintな上に最大値が低いからなぁ。 extern(C)使…

式テンプレートをphobosに入れてもらおうと企みつつ整理中

ああ、言語の壁! 表現の壁! コンパイラのバグ! http://www4.pf-x.net/~nazodane/cgi-bin/index.cgi?mode=upload:show&name=expression.d 英語が怪しいのはいつもの事として、コンパイラのバグがどんどん浮いてくるなぁ。 あとopReturnType*が構文の都合上で…

自作ソート続き

メモリがワーストケースでもn*32で良くなった。入力バッファに出力するようにしたので、配列スライスやGCの無いC言語でも実装できるようになった。高速化した。まだ一ヶ所高速化途中の箇所あるけどもういいや。 速度的には、D言語の内部ソート(独自実装のqso…

ntzの高速化続き

重ねたテーブル使ってみた。遅かったのでインラインアセンブラで書き直したら早くなった。コンパイラは当てにできないなぁ。 invariant ubyte[152] table=[ 0, 0, 1, 0, 2, 0, 8, 9, 3,10, 0,16,17,11,18, 0, 4, 0,19, 0, 0,12, 0, 0,24,25,20,26, 0, 0, 0,2…

ソート作ってみた。

O(n)で打倒qsortを目指し。勝てないなぁ。 アルゴリズム考えてるときから分かってたけど、メモリ喰いまくり。ワーストケースでn*33bytesも喰う。 あとntzはもっと早く求めることできる気がする。 uint bit_count(uint bits) { bits = (bits & 0x55555555) + …

逆写像ソート

↓勘違いしてる。uint[] nextを使えばオブジェクト毎ソートできる。 import std.stdio; int[] mapsort(int min, int max)(int[] arr){ size_t[max-min+1] len; foreach(i;0..arr.length) len[arr[i]-min]++; size_t c; foreach(i;0..max) foreach(j;0..len[i]…

radixソート

負数は未対応。 import std.stdio; uint[] sort(uint[] arr){ scope uint[] buf = new uint[arr.length]; foreach(k;0..uint.sizeof){ size_t[0x101] count; foreach(a;arr) count[((a>>(8*k))&0xff) + 1]++;//FIXME: 0xffの時は数えなくていい。 foreach(i;…

Trident(MSIE)に対応してみた

SW

まだ確認はie6 (msxml3? 2?)だけ。 変更した点 xml-stylesheetをapplication/xmlからtext/xslに(msxmlのバグ回避) xsltのoutputを削除(msxmlのshift-jisになってしまうバグ回避) dtdの修正(w3cのflat-dtdのエンバグ修正、msxmlのバグ回避) 標準を無視しなき…

Fx 3.0b4

Fx

b3の不具合が減ってていい感じ。それと全体的に早くなってる。 ただplacesはもっと早くなってくれないかなぁ。 あと、b2r+defaultExの全件表示がまだ遅い(1000レスで5s)。 #そういや、Alt+Enterは何処行った? よく固まる。残念。

公共の福祉は魔法の言葉

衝突したとき考えるのめんどくせ。世の中に良くなる方にしとけ。っていう丸投げ感が。 衝突無視して法律作ってパルプンテ。裁判官がよきに計らってくれる。的な。 まぁ憲法は要求仕様的なものだからいいとしても、法律までそうだと困る罠。 憲法の草案作って…

andLinux pulseaudioを使えるようにする

/etc/default/pulseaudioのPULSEAUDIO_SYSTEM_STARTを1にする。 /etc/init.d/pulseaudio restartをする。 ファイル名を指定して実行->"cmd"から、 "C:\Program Files\andLinux\pulseaudio\pulseaudio.exe" -D を実行。 timidity -Oeで音鳴った。mplayerも鳴…

andLinuxを入れてみた

後で追加すればいいと考えてxfceのを入れた。 メモリ256M、ファイルシステムはcofsにした。 なんか起動が遅い。 uname -aはこんな感じ: Linux andLinux 2.6.12-co-0.7.1 #1 Sat Jul 14 12:13:49 UTC 2007 i686 GNU/Linux。カーネルが古いけど、大丈夫なのだ…

IE8

Web

まだ使ってないけど、方向転換して凄く良くなってそう。MSの本気krkr? と思ったらaddEventListenerや__proto__、SVG、xhtmlに未対応らしい…。さすがMS。 UI面ではついにwebとの融合ktkr。あのActivitiesはOS全体に渡って使えるようにするべきだろうなぁと思…

用語メモ2

IFTI implicit function template instantiation

dmd v2.012

structにデストラクタとコピーコンストラクタが付いた。C++との完全互換でも目指すつもりだろうか。もしそうならオペレーションオーバーロードが鬼門になりそうだが…。 >Added compile time error for comparing class types against null. は解説待ち。if(i…

ubuntuでVS2008 Expressが動かない

vcssetup.exeを落とす。 winbindをインストールする(sudo aptitude install winbind)。 最新版のgitに以下のパッチを当てる。 http://www.winehq.org/pipermail/wine-patches/2006-February/023886.html http://www.winehq.org/pipermail/wine-patches/2008-…

Konqueror 4を試してみた

Acid2のおかげでか良くはなってはいるが、相変わらずxml/xhtml周りが色々とおかしいなぁ。xsltに対応してないようだし、ACCEPTにapplication/xhtml+xml返してないし、の扱いが変な気がする。というかそもそもxmlに対応してるのだろうか? 後、Javascriptの互…

Monodevelop 0.18b3でC# + gtk#レビュー

hardy付属の。以前使ったとき(0.13)より良くなってるのでレビュー。 gtk#がSystem.Windows.Formsと異なってるので覚えなおさないといけないなぁ。しかも、オートコンプリートで説明が出てこない…。 Gtk.MessageDialogのコンストラクタがやけに引数を多く必要…

多段replaceの文字列mixinを使った高速化(3)

次に、実装していきます。まずは、引数の制限を追加します。 string multiReplace(repstrs...)(string s){ /*static */assert(~repstrs.length & 1, "invalid repstrs.length"); mixin(genMultiReplaceCode(s.stringof, [repstrs])); } バグでstatic assert…

多段replaceの文字列mixinを使った高速化(2)

まず雛形とテストケースを作ります。名前はreplace.dとします。コンパイル及び実行はrdmd -unittest replace.dで行います。ちなみにこのテストケースはまだ抜けが多いということを覚えておいてください。 module replace; import std.stdio; /* * multiRepla…

多段replaceの文字列mixinを使った高速化(1)

.replace("",">")がうまく最適化される世の中なんて無い。最適化を研究してけばできるのだろうけど、個人的にどのコンパイラも文字列まわりの最適化の実装は遅れてる印象がある。というかあまり聞いたこと無い。ということで黒魔術っぽいmixinで解決しましょ…

gdcについて - itkzさんの質疑の時に話したことへの補足を含む

gdcのd/target-ver-syms.sh辺りで色々versionが生成されてる。 gdcのphobosにはstd.stdintでClong_tとCulong_tが定義されてるみたいだ。初めて知った。あと、__builtin_Clongや__builtin_Culong、__builtin_machine_int、__builtin_machine_uint、__builtin_…