SELECT category_en,COUNT(category_en) FROM diary GROUP BY category_enという驚くべき(?)結果に。('A`;
→ 0.1633 sec.
SELECT category_en FROM diary GROUP BY category_en
→ 0.0780 sec.
SELECT category_en FROM diary
→ 0.0018 sec.
while (my $TMP_HASH = $mysql_sth->fetchrow_hashref) {0.02 sec. だけ早くなったが、こうすることで今まで主カテゴリと副カテゴリの 2回クエリを実行していたのが 1回で済んだので、0.16 x2 sec. が 1/2 になったので無問題。
$CATEGORY_COUNT{$TMP_HASH->{category_en}}{$TMP_HASH->{subcategory_en}}++;
}
→ 0.14367 sec.
SELECT category_en,subcategory_en,COUNT(category_en) FROM diary GROUP BY category_en,subcategory_enとなりキャッシュ効きまくり。
→ 0.00063 sec.
#!/usr/local/bin/perl5.8.6ただ単に $TMP_HASH->{'COUNT(category_en)'} とすればいいだけだったなんて・・・。
use DBI;
my $query_strings = "SELECT category_en,COUNT(category_en) FROM diary GROUP BY category_en";
$mysql_db = DBI->connect("DBI:mysql:DBNAME:localhost", USERNAME, PASSWORD);
$mysql_sth = $mysql_db->prepare("$query_strings");
my $ret = $mysql_sth->execute;
my @MAIN_CAT_DATA;
while (my $TMP_HASH = $mysql_sth->fetchrow_hashref) {
printf("%-15s %5d\n", $TMP_HASH->{'category_en'}, $TMP_HASH->{'COUNT(category_en)'});
push(@MAIN_CAT_DATA, "$TMP_HASH->{'category_en'}:$TMP_HASH->{'COUNT(category_en)'}");
}
$mysql_sth->finish;
$mysql_db->disconnect;
0.167482 sec."SELECT * FROM diary" より遅くなるのは GROUP BY と COUNT で集計してるからか・・・。_| ̄|○
SELECT category_en,subcategory_en,COUNT(category_en)
FROM diary GROUP BY category_en,subcategory_en
0.164456 sec.
SELECT category_en,COUNT(category_en)
FROM diary GROUP BY category_en
0.145685 sec.
SELECT * FROM diary
表示速度は 1.5sec まで短縮できたが、プラグインを使っている限りこの壁は越えられそうにない。
- 月別表示した時、一番最後の日の記事が前日の記事と一緒になってしまうバグを修正。
- 月別表示した時、表示している月のカレンダーを表示するよう修正。
今までは「現在の月」を表示していた。
% /usr/bin/time ./sakura.cgi > /dev/null・・・・・・。
2.26 real 0.80 user 0.28 sys
~/public_html/nikki> mv plugin plugin_・・・・・・・・・・・・。(´д`;;;
~/public_html/nikki> /usr/bin/time ./sakura.cgi > /dev/null
0.64 real 0.37 user 0.08 sys
~/public_html/nikki> mv plugin_ plugin
~/public_html/nikki> /usr/bin/time ./sakura.cgi > /dev/null
2.24 real 0.87 user 0.20 sys
#!/usr/bin/perlメインカテゴリとサブカテゴリを表示するというスクリプトなのだが、以下のような結果を期待していた。
$TEST{'STR'} = 'PC';
$TEST{'STR'}{'1'} = 'STR-1 values.';
$TEST{'VAL'} = 2;
$TEST{'VAL'}{'2'} = 'VAL-2 values.';
$TEST{'DAT'} = "テスト";
$TEST{'DAT'}{'3'} = 'DAT-3 values.';
td();
sub td {
foreach $mk (keys %TEST) {
print ">$mk\n";
foreach $sk (keys %{$TEST{$mk}}) { print "> $sk: $TEST{$mk}{$sk}\n"; }
}
return undef;
}
>>>STRしかし結果はあまりにも無惨で以下のような結果となった。
>1: STR-1 values.
>>>VAL
>2: VAL-2 values.
>>>DAT
>3: DAT-3 values.
>>>STR連想配列名 "STR" のサブ連想配列が出てこないのだ。
>>>VAL
>2: VAL-2 values.
>>>DAT
>3: DAT-3 values.
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄