2020年7月アーカイブ

Linux memo 2020/07/26

● ぼくのかんがえたさいきょうのmemcpy()
※ただしC言語に限る
https://github.com/rarul/algorithm_bench/blob/master/memcpy/common/memcpy.c
- 実用上は32bitか64bitの2か4のループアンローリングくらいで十分っぽい?
- gccの-O3だとヘタに自分で展開するより早かったりする、勝手にループアンローリングやってる?
- __int128のgcc拡張が使えるという知見を得た(gcc-4.4.7は使えなかった)
- alignment合ってなくてもCPUでなんとかしちゃうx86ずるい
- x86_64は、alignment乗ってると早いし、乗ってなくてもちゃんと動くし、alignmentチェックする価値がなさそう
- __int128は、x86_64でもalignmentエラーで落ちた
- 結局glibcのmemcpy()が一番早い、次点でgcc -O3
- asm使った最適化は猛者の総ツッコミが来そうなので語らないことにする

● その他
ネタはあったはずなのに最近やる気が出なくて作業が進まない...

Linux memo 2020/07/01

● ~(Tilde, チルダ)って何?
たぶんちゃんとしたUNIX規格とかあるんだろうけど、現状のLinuxとしては、
- 「~」(※\0含む)や「~/」はホームディレクトリを表す
- 「~strings/」は、/があるとこまでをユーザ名とみなして、そのユーザのホームディレクトリを表す
となる(bashのtilde.cあたり)
bashのいうホームディレクトリとは、
- 環境変数$HOMEのこと
- $HOMEが空のときは、getpwuid()とかで取れるやつ(==つまり/etc/passwdに書いてあるもの)
- bashはログインシェルとして振る舞うとき、起動時にgetpwuid()で取得したやつを$HOMEに設定する
となる。つまりすべてシェルのお仕事。
このため、自作プログラムとかにおもむろに「~rarul/memo.txt」とか書いても何もしてくれない。
あとこんなことができる
[rarul@tina bash-4.4.18]$ echo ~
/home/rarul
[rarul@tina bash-4.4.18]$ export HOME=hogehoge
[rarul@tina bash-4.4.18]$ echo ~
hogehoge

● ヌル島 (Null Island)
ヌル島 - Wikipedia
緯度0経度0はアフリカギニア湾の沖合いになるが、実装の都合上そこに何かがあったほうがいいということで設定された島。
ヌルオブジェクトパターンのようなイメージなのかな。
現在位置がここになっている技術者は世界中にたくさんいると思われる。

このアーカイブについて

このページには、2020年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2020年4月です。

次のアーカイブは2020年10月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 5.2.13