謎's キッチン

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

GoogleがYoutube買収?

帯域が上がるのには期待したいけど.torrentライクな専用クライアントを作って使うようにした方が転送量下がる気ガス(プラグインを作ればいいんだし。)
むしろ今までの著作権がグレーなのの扱いがどうなるか気になる。
ていうかそもそもネタの可能性もあるらしいしそれに期待したい。

高速化の限界

gcが遅い。allocとかreallocとか。検索/置換がカオスってきた。templateの柔軟性がもっと高ければ自動的に関数の生成ができるのに…。現状でも定数個のmemcpyの高速化とかできなくないけど長ったらしい。


void memcpy(int T)(void* to, void* from){
static if(T==0)return;
else{
static if(T%2==1){
*cast(byte*)to=*cast(byte*)from;
static if(T > 1){to++;from++;}
}
static if(T%4>=2){
*cast(short*)to=*cast(short*)from;
static if(T > 3){to+=2;from+=2;}
}
static if(T%8>=4){
*cast(int*)to=*cast(int*)from;
static if(T > 7){to+=4;from+=4;}
}
static if(T < 8){
}else static if(T == 8){
*cast(long*)to=*cast(long*)from;
}else{
for(int i=0;i<(T/8-1);i++){
*cast(long*)to=*cast(long*)from;
to+=8;from+=8;
}
*cast(long*)to=*cast(long*)from;
}
}
}
ためしてないけど合ってると思う。この程度ならコンパイラの最適化に任せられるけどもっと複雑になってくると自分で書いた方が良くなってくる。正規表現コンパイル時にコードの生成までできればかなり速度がでるはずだし。

memzeroとmemsetも追加してみた。(mem.d)