テストとか

2009-04-28

退任&独立しました 20:09

しっかり時間を作って取り組んでみたいことが増えてきたので、4/25 の定時株主総会をもって KBMJ取締役 CTO を退任させていただきました。

今後は独立してエンジニアクッキー屋(妻と一緒に始めました!)として活動していく予定です。エンジニアとしてはある程度フリーで活動しつつ、KBMJ でも技術顧問として今後もサポートさせていただくつもりですのでよろしくお願いいたします。

ntkntk 2009/04/28 23:08 お疲れさまでした!&&クッキーに期待!

siroi_mogutansiroi_mogutan 2009/04/28 23:14 おー! クッキーの方にもかなり興味ありです

masuidrivemasuidrive 2009/04/29 01:43 おめでとうございます。
ぜひ頑張ってください!

hajimesasakihajimesasaki 2009/04/29 02:27 おつかれさまです。
今度クッキー食べに行きます。
堅いクッキーが好きです。
奥さんにも会ってみたいです。

ramyanaramyana 2009/04/29 05:59 おつかれさまでした!

ogijunogijun 2009/04/29 11:00 クッキー買いに行きます!

akio0911akio0911 2009/04/29 22:01 おめでとうございます! http://pipes.yahoo.com/oquno/bikke

kstnkstn 2009/04/30 01:09 うお Yahoo Pipes ときたか!いずれフィードはちゃんと対応したいと思います・・
みなさんありがとう!

smellmansmellman 2009/04/30 10:25 おつかれさまでした!この前の朝会での突然の発表には驚きましたよ!
クッキー屋さんがんばってください!!

TrinityTTrinityT 2009/04/30 11:59 |3・)<otukaresamadesu!

techamtecham 2009/05/01 09:40 お疲れ様でした。
クッキー どこで買えるんだ??

iPhoneからでした 買えないって本当か?
俺はまだドコモなんだ。。

kstnkstn 2009/05/01 11:04 からでした→からでしか かな?>techam
まだ始めたばかりなのでいまのところはイベントに出店してるだけですー

miurrormiurror 2009/05/03 13:39 おお...
クッキー屋楽しみにしています。

techamtecham 2009/06/02 11:09 こないだ32歳になったのに、まだ日本語がうまく
あやつれないんだ。

どーよ、最近の調子は。俺は冬以外は 蟹の季節じゃないんで
わりと、のんびりしてます。

2008-12-19

SFCの新しいサイトがひどいので 22:58

HTML だけ表示するぐりもんを作ってみた。

http://userscripts.org/scripts/show/38907

f:id:kstn:20081219225456p:image

すぐに戻すらしいのであんまり意味ないスクリプトだと思いますが...

http://fumi.me/2008/12/19/answer-from-sfc/

追記:HTML版が用意されるようになったので必要なくなりましたが、このスクリプトインストールしてFlash版にアクセスすると一応つかえます。Flash版もだいたいのページはHTMLを読み込んでいるだけなのが分かります。ここまでHTMLのコンテンツを用意しておきながら、何故最終的にFlash以外のブラウザクローラを完全に排除してしまったのでしょうか・・

2008-12-15

iPhone アプリダウンロード数集計スクリプト 18:43

iPhone アプリダウンロード数を集計してくれるアプリがいろいろあるそうです。

http://www.sonasphere.com/blog/?p=964

ただ、プログラマとしてはやはりマウスでカチカチして結果を見るよりは Terminal 上で集計して、あとでいろいろ再利用できるテキストファイルとして出力したいものです。というわけで、これまで PocketGuitar のダウンロード数を集計するのに使っている簡単なスクリプトgithub に置いてみました。1日ごとのダウンロード数と国別の割合の集計ができます。

http://github.com/kasatani/iphone-stats/tree/master

ただし、まだ1つしかアプリを公開していないので複数のアプリに対応してませんので、適当に改良しちゃってください・・オプションアプリケーション名を渡すとフィルタしてくれるようなのがいいのかな。

2008-10-31

[] 浮動小数点演算の高速化 22:04

ぼちぼち iPhone 開発ネタも書いていこうかと。

浮動小数点演算をバリバリ行うようなコードではコンパイラオプションで Compile for Thumb (-mthumb) を無効にすると速くなるらしいので、実際どんなもんだろうと思ってベンチマークを取ってみました。

ソースはこんな感じで、float と int のかけ算の処理をループさせたときの実行時間を測定しています。

#define CYCLES 100000000

void fp_test() {
    float a = 0.0000001f;
    float b = 1.0000001f;
    CFAbsoluteTime t1 = CFAbsoluteTimeGetCurrent();
    for (int i = CYCLES; i >= 0; i--) {
        a = a * b;
    }
    CFAbsoluteTime t2 = CFAbsoluteTimeGetCurrent();
    NSLog(@"%f seconds - %f", t2 - t1, a);
}

void int_test() {
    int a = 3;
    int b = 1234567;
    CFAbsoluteTime t1 = CFAbsoluteTimeGetCurrent();
    for (int i = CYCLES; i >= 0; i--) {
        a = a * b;
    }
    CFAbsoluteTime t2 = CFAbsoluteTimeGetCurrent();
    NSLog(@"%f seconds - %d", t2 - t1, a);
}

iPhone 3G でやってみた結果(処理にかかった秒数)はこんな感じです。float の場合 thumb を無効にすることで 5 倍近くも速くなってますね。

float int
Thumb 9.63 1.74
ARM 1.99 1.24

ARM のアセンブリなんて書いたことないのですが、なんとなく読んでループの部分のコードを見てみるとこんなかんじです。ARM(Thumb 無効)の場合は fmuls でかけ算を行うのに対し、Thumb では mulsf3vfp というコードに飛んでいます。(実際には mulsf3vfp$stub で何か準備をして mulsf3vfp に飛んでいます。Thumb から ARM に切り替えるための処理?)

ARM
L2:
LBB2:
LM4:
	subs	r3, r3, #1
LM5:
	fmuls	s16, s16, s15
LM6:
	bne	L2
Thumb
L2:
LBB2:
LM3:
	add	r0, r5, #0
	ldr	r1, L9+8
	blx	L___mulsf3vfp$stub
	sub	r4, r4, #1
	add	r5, r0, #0
LM4:
	cmp	r4, #0
	bne	L2

mulsf3vfp のソースっぽいのはここにあるので見てみると、以下のように fmuls を呼び出しています。

http://www.opensource.apple.com/darwinsource/iPhone2.1/gcc-5488/gcc/config/arm/ieee754-sf.S

/* APPLE LOCAL begin ARM 4702983 provide VFP versions (callable from Thumb). */
#ifndef NOT_DARWIN
#if __ARM_ARCH__ > 5
#ifdef L_mulsf3vfp

ARM_FUNC_START mulsf3vfp

	fmsr	s14, r0
	fmsr	s15, r1
	fmuls	s13, s14, s15
	fmrs	r0, s13
	RET

	FUNC_END mulsf3vfp

#endif

というわけで、Thumb でも FPU が使われていることには変わりないものの、関数呼び出しが行われる分のオーバーヘッドがでかいみたいですね。

それから float だけでなく int も ARM のほうが若干速くなってるので見てみると、次のようになっています。ARM のほうは sub のかわりに condition flag が更新される subs が使われていて、これによって条件分岐の cmp が省略できてるみたいですね。

ARM
L12:
LBB3:
LM13:
	subs	r3, r3, #1
LM14:
	mul	r4, r2, r4
LM15:
	bne	L12
Thumb
L12:
LBB3:
LM10:
	sub	r3, r3, #1
	mul	r4, r4, r2
LM11:
	cmp	r3, #0
	bne	L12

というわけでヘビーな演算を行うアプリケーションで Thumb を無効にするのはかなり効果が大きそうです。もちろん、これはあくまで細かいベンチマークであって、デフォルトの Thumb のほうは命令が 16 ビットに圧縮されてコードは小さくなるというメリットがあるので、実際のアプリケーションのパフォーマンスが上がるかどうかははベンチマークを取ってみて本当に必要かどうか判断されるのが良いでしょう。

それから iPhone よりも速いという噂の iPod touch 2nd gen で試してみたところこんな感じでした。確かに 1.3 倍くらい速いです。

float int
Thumb 7.20 1.33
ARM 1.51 0.95

参考までに MacBook Pro (Core 2 Duo 2.4GHz) のシミュレータで動かした場合は以下のような結果でした。

float int
0.45 0.14

macmac 2008/11/09 13:55 今回の題と違って、申し訳ないのですがアプリのギターの基本音量を上げていただけないでしょうか? (音楽に負けないぐらい)

kstnkstn 2008/11/09 23:31 macさん>設定画面で音量を最大にしてもまだ足りない感じでしょうか?以前ディストーションの音量を上げすぎてiPhoneのスピーカーを壊したという方もいらっしゃるらしいので慎重に検討したいと思います。

kobakoba 2008/11/10 10:49 初めまして。
Thumbでは直接FPUの命令を実行できないので、一度ARMモードに切り替える必要があるのですね。そのためこの部分がライブラリ化されているのでしょう。
ARMv7のthumb2になるとFPU命令も直接実行できるようになります。

tentootentoo 2008/12/15 12:14 わー、ありがとうございます。浮動小数点演算がクロック並みに反映されてないなぁと思ってたら、こんな仕掛けがあったんですね。助かりましたー。

2008-10-27

WEB+DB PRESS Vol.47 19:09

発売までに紹介しておこうと思いつつ遅れてしまいましたが、WEB+DB PRESS Vol.47 で Objective-C の入門記事を書きました。

これから iPhone アプリでも作ろうかという方に Objective-CCocoa の雰囲気だけでもつかんでいただければと思います。自分なりにエッセンスをいくつか収めたつもりですが、わずか8ページなので、より深く理解したい方は荻原本(詳解 Objective-C 2.0)なり Apple のドキュメントなりを読んでくださいね :)