tuple構築時再帰深度最適化の終焉

https://gist.github.com/wx257osn2/8051199 これから約半年後,わずか1晩の出来事である
2
GP @cifar10

再帰深度が対数オーダーで構築出来るtuple、その代わりに計算量の方にしわ寄せが来ていてコレ指数時間にでもなってるんじゃないかってレベルでコンパイル終わらなくて結局要素数増やすといつまで経っても構築終わらないから使いものにならないみたいなアレを味わった。

2014-05-25 00:14:59
GP @cifar10

実装読もうとしたけどtupleだけで1000行ぐらいあって読めなかった

2014-05-25 00:15:44
GP @cifar10

(根性がなくて)読めない

2014-05-25 00:16:30
I @wx257osn2

私のだとしたら、すまんなとしか言い様がない [Nexus5]

2014-05-25 00:25:13
GP @cifar10

実装解読出来たら最適化してオーダー下げられないかなぁ…

2014-05-25 00:25:41
I @wx257osn2

実いうとな、私ももうあのコード弄れる気がせんのじゃ [Nexus5]

2014-05-25 00:25:41
I @wx257osn2

大体noexceptとか規格のrequireを忠実に書こうとして変なマクロ突っ込んであるのが読みにくくなってる原因 [Nexus5]

2014-05-25 00:26:39
I @wx257osn2

ちなみに実装部分はvalue_btreeに集約されてるけどあそこもtuple_catを対数オーダーにする過程で魔改造受けてるからかなりヤバイことになってる [Nexus5]

2014-05-25 00:27:45
I @wx257osn2

つまり闇だ、どうしてああなった [Nexus5]

2014-05-25 00:27:58
南山まさかず @minamiyama1994

対数オーダーtuple、作ってみようかな

2014-05-25 00:28:22
南山まさかず @minamiyama1994

型レベルでは対数オーダー型リストとかできてるわけだから、もしかしたらその辺のノウハウが活かせるかもしれない

2014-05-25 00:29:01
GP @cifar10

@minamiyama1994 構築の段階で、木のような感じに組み立てると深度が対数になるという解説を見ましたが、実装見てもつらみでした…。

2014-05-25 00:29:49
I @wx257osn2

近々再帰深度低めに抑えられたunique入りのtupleをveilerに入れます [Nexus5]

2014-05-25 00:29:48
I @wx257osn2

tupleとかlambdaとか、型と値の流れが逆行するの実装がどえらいことになるからつらみしか無い [Nexus5]

2014-05-25 00:32:28
I @wx257osn2

あ、ちなみにGCCはメモリそこそこ積んどけば結構行けますよ、Clangがちょっと怪しい [Nexus5]

2014-05-25 00:31:17
GP @cifar10

アレ理解したら勉強会で45分ぐらいは実装について発表出来るレベル…

2014-05-25 00:32:15
I @wx257osn2

自分でも良くあんなコードかけたなぁと思うし、アレの前提としてindex/type_tupleの対数オーダー実装があるので、ボレロさんとのじさんにはまじで感謝してる [Nexus5]

2014-05-25 00:33:46
南山まさかず @minamiyama1994

対数オーダーtuple、何とか頑張って多重継承とか使えそうな気がするのだけれどなぁ

2014-05-25 00:33:05
I @wx257osn2

継承は全く考慮してなかったので、使うともう少し楽に書ける可能性は高い [Nexus5]

2014-05-25 00:34:33
南山まさかず @minamiyama1994

対数オーダーtuple、僕なら多分多重継承使う、具体案は無い

2014-05-25 00:35:03
GP @cifar10

多重継承…書ける気もするけどどうなんだろうな

2014-05-25 00:35:14
南山まさかず @minamiyama1994

2分割するってのはもちろんなのだけれど、あーでもそれ合成でもいいかとかとも考えている

2014-05-25 00:35:48
I @wx257osn2

少なくとも継承と包含でコンパイラに与える負荷の差がどんくらいか、誰か調べてないの(ねーよ) [Nexus5]

2014-05-25 00:37:15