2014年6月29日日曜日

Google I/O 2014まとめ

この辺の記事を参考に、関心がある部分のみメモ。
http://weekly.ascii.jp/elem/000/000/232/232119/

・Android ware
 腕時計型の端末。Google PlayでLG製はすでに発売中。22,900円。
 今買えば、7月4日までに出荷?
 
 
 https://play.google.com/store/devices/details?id=lg_g_watch_black
 Samsung製は近日発売。22,000円。
 https://play.google.com/store/devices/details?id=samsung_gear_live_black

 開発キットは以下からダウンロード可能。但し、Android Wear製品を使うには
 Android 4.3(JellyBean)を搭載するスマホやタブレットが必要。
 http://developer.android.com/wear/index.html

・Android Auto(AppleのCarPlay対抗)
・Android L(Androidの次期バージョン、新UIの"マテリアルデザイン"採用)
・Android One(新興国向けの100ドル以下の低価格端末)

2014年2月11日火曜日

[Perl] ハッシュ使用時に、キーの設定順を保持する方法

Perlのハッシュ(連想配列)は便利で良く使うのですが、
キーの設定順を保持してないので、例えば以下のコードを
実行すると、

#!/usr/bin/perl
my %tmp = ();
for (my $i=0; $i<100; $i++) {
  $tmp{$i} = $i+1;
}
foreach my $key (keys %tmp) {
  print "$key, $tmp{$key}\n";
}
exit;

■出力

6, 7
3, 4
7, 8
9, 10
2, 3
8, 9
1, 2
4, 5
0, 1

5, 6

と、バラバラな順序になってしまいます。
なのでメモリの無駄だなーとは思いつつ、キーだけ格納する
配列を別途用意したりしてましたが、そんなことをしなくても
良い方法があることを知りました。

それはTie::IxHashモジュールを使う方法です。
残念ながらMacのPerl v5.16.2環境では標準で入ってなかった
のですが、以下のコマンドでインストールできます。
sudo cpan
install Tie::IxHash

で、以下のようなコードで実行すると、

#!/usr/bin/perl
use Tie::IxHash;
my %tmp = ();
tie %tmp, 'Tie::IxHash';
for (my $i=0; $i<10; $i++) {
  $tmp{$i} = $i+1;
}
foreach my $key (keys %tmp) {
  print "$key, $tmp{$key}\n";
}
exit;

■出力
0, 1
1, 2
2, 3
3, 4
4, 5
5, 6
6, 7
7, 8
8, 9

9, 10

と、格納順で出力できます。

モジュールを追加しないといけないので、場合によっては
使えないかもしれませんが、なかなか良さげですね。

2014年2月9日日曜日

[Perl] ループ処理の高速化

Perlで、よくforとwhileとforeachの使い方で、
ループの処理速度ではforeachが一番速いと聞くので、
どれくらい速いか確認してみました。

試した環境は、Mac mini(Intel Core 2 Duo 2GHz、メモリ2GB)
Perlのバージョンはv5.16.2

ソースは以下のような感じで比較。
# for版はこちら
#!/usr/bin/perl
my $t1 = time();
my $tmp=0;
for (my $i=0; $i<=1000000000; $i++) {
  $tmp = $i;
}
my $t2 = time() - $t1;
print "$t2\n";
exit;

# foreach版はこちら
#!/usr/bin/perl
my $t1 = time();
my $tmp=0;
foreach(1..1000000000) {
  $tmp = $i;
}
my $t2 = time() - $t1;
print "$t2\n";
exit;

結果は、for版で114秒、foreach版で100秒でした。

うーん、確かにforeach版の方が処理が速いですが、
10億回で14秒と言われると。。。

ちょっとしたループ処理なら、あまり気にしなくても
良いでしょう。

2014年1月26日日曜日

はじめに

今さらですが、Blogを初めてみようと思います。

技術系のお仕事なので、メモがてら、プログラミングの話などを
まったり書いていこうと思ってます。

どうぞよろしく!