この辺の記事を参考に、関心がある部分のみメモ。
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年6月29日日曜日
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;
■出力
キーの設定順を保持してないので、例えば以下のコードを
実行すると、
#!/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;
■出力
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
と、格納順で出力できます。
モジュールを追加しないといけないので、場合によっては
使えないかもしれませんが、なかなか良さげですね。
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;
ループの処理速度では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;
#!/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秒と言われると。。。
ちょっとしたループ処理なら、あまり気にしなくても
良いでしょう。
登録:
コメント (Atom)