トップ «前の日記(2005-11-09) 最新 次の日記(2005-11-13)» 編集

Public Diary


2005-11-10

[開発] getc と read の速度差

朝令暮改

getc() は、Linux C Library (libc) では、iostdio.h で

#define getc(_fp) _IO_getc(_fp)

と定義されたマクロで、さらに libio.h 中で

#define _IO_getc(_fp) \
       ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end ? __uflow(_fp) \
        : *(unsigned char*)(_fp)->_IO_read_ptr++)

と定義されている。つまり、getc を呼ぶと必ず三項演算子が呼ばれて比較が行われる。これが速度低下の原因のようだ(関数版もロックを除けば動作は同じ)。

でも、実際はどうなんだろう。何かが引っかかる…

昔、「read は使うな、getc を使え」を言われた記憶はあるんだけれど、どこで誰にどういうシチュエーションで言われたのかさっぱり思い出せない。多分移植性の話をしていたときに、高級関数(?)であるgetcのほうがアーキテクチャの壁を越えられるからだ、という説明だったような気がするが、少なくとも getc のソース(?)を見る限りでは、それほど依存性には違いがないような気がする。

(2005/11/13追記)

getc()の戻り値の型がintなのに対し、read()は「void* なバッファに○○バイトを読み込む」という定義なので1キャラクタが2バイトになるファイルシステム*1ではうまく動作しない、とかそういうことだっけかな?

*1 あるのかそんなの

[雑記] スタバの株

スタバの株が急上昇ですよ。

stockweather/2712:starbucksj

こんなコメント書いてましたが、4万円どころか5万円を突破してしまいました。もう6万円に届きそうな気配です。中間決算を見越しての行動か、それとも支手的な動きなのか…。ここ数年、10月〜11月はいつも中間決算後に手放す人がいるのか値下がりしてるんですけどねぇ…。

買おうと思ったけどバブル的な値動きをしているのでしばらく静観。17日の中間決算発表でどうなるんでしょうか…。プラス予想も出ているし、そうはいっても16日までに買うほうが良いのかも?

本日のツッコミ(全6件) [ツッコミを入れる]
まきまき (2005-11-11 07:26)

冬のボーナスで買おうと思ってたけど・・・<br>まぁ、私が「欲しい」と言った瞬間に父ちゃんが1株買ったからいいかw

なかの (2005-11-12 01:24)

> どこで誰にどういうシチュエーションで言われたのかさっぱり思い出せない。<br><br>私、そう言う記憶が増えてきた…ヤバいな。<br>忘れようとしても思い出せないぜー。

わっしぃ (2005-11-12 02:37)

ん〜、ひょっとしてひょっとして<br><br><br>…そういうお年頃ですか、我々。

わっしぃ (2005-11-12 02:38)

スタバ株、株券はいらないから株主優待券くれー

なかの (2005-11-13 12:45)

いいなあ…伸び盛りの株、業種は…<br>インフラ系と違ってサービス系の強みはそこだよなぁ<br><br>うちは「一度構築したらそれっきり」観測が出た所に<br>「今期配当なし」発表しちゃったもんだからねぇ…

わっしぃ (2005-11-14 23:15)

株価と業績は違いますから…特に今回のスタバ株の高騰は<br>実際の業績と乖離した動きなのでいわゆる「投機」です。<br>そういうのに翻弄される会社はむしろかわいそうです。


1980|03|
1986|04|
1998|04|
2002|01|11|
2003|03|04|05|07|08|
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|02|03|04|06|07|08|11|12|
2008|01|02|03|04|06|07|08|09|10|
2009|01|12|
2011|05|10|11|
2012|01|02|10|