Archive for 1月 10th, 2011

実行速度

1月 10th, 2011 by admin

Pythonは速いとの記述を見かけたので他の言語との性能比較をしてみました。
測定に用いたプログラムは、1~10,000,000までの総和を求めるというシンプルなものです。
非常に簡易的な測定なので、結果を鵜呑みにしないようご注意ください。

測定に用いた環境は以下の通り。

ベンチマーク環境

Python2.5

ループ1000万回で実行時間が1.632秒
ループ1回の所要時間は163.2nsです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> def count(n):
...   i = 0
...   sum = 0
...   while i < n:
...     i = i + 1
...     sum = sum + i
...   return sum
...
>>> profile.run('count(10000000)')
         4 function calls in 1.632 CPU seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 :0(setprofile)
        1    1.632    1.632    1.632    1.632 <stdin>:1(count)
        1    0.000    0.000    1.632    1.632 <string>:1(<module>)
        1    0.000    0.000    1.632    1.632 profile:0(count(10000000))
        0    0.000             0.000          profile:0(profiler)

PHP 5.3.1

xamppでインストールした環境で、オプティマイザー類は何もいれていません。
ループ10000000回で実行時間は0.927秒
ループ1回の所要時間は92.7nsです。

あれっ、Pythonより速いですね。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$time = microtime(true);
sum(10000000);
echo microtime(true) - $time;

function sum($n){
  $sum = 0;
  for($i = 0; $i <= $n; $i++)$sum+=$i;
  return $sum;
}

結果
0.92703986167908

JavaScript on Chrome8

ループ1000万回で実行時間は0.195秒。
ループ1回あたりの所要時間は19.5nsです。

JavaScriptってもっと遅いものだと思ってました。Chromeすごいですね。
IE9で測定すると0.25秒前後、Firefox3.6で測定すると0.05秒程度でした。
まっ、ソースコードが単純すぎるのであまり参考にはなりませんが、JavaScript、意外と速いですね。

1
2
3
4
5
6
7
8
9
10
11
<script>
n = 10000000
sum = 0;
var start = new Date();
for(i = 0; i < n; i++){
  sum += i;
}
var end = new Date();
var span = end-start;
alert(span)
</script>

まとめ

Pythonそんなに速くない。けど、致命的な遅さではないはず。きっと。

App Engine 1.4.1リリース文

1月 10th, 2011 by admin

リリースノート(日本語訳)
App Engine 1.4.1 をリリースしました - High Replication Datastore の紹介

リリースノート原文(英語)
Announcing the High Replication Datastore for App Engine

要約すると、今まではMaster-Slaveモードで運用していたが、トラブルが多かったのでHigh Replication Datastoreを使えるようにしました。この新しいデータストアは、複数個所にデータを保存するため、安全性は高いです。新データストアを作るためには、新しくアプリケーションをセットアップする必要があります。料金は従来の3倍に設定しますが、近日中に改定予定です。

外部リンクにtarget=_blankを指定

1月 10th, 2011 by admin

外部ドメインへのリンクにtarget=_blankを指定しました。無駄に新しいウィンドウを開くのはマナー違反ですが、ドメインをまたいだリンクは新しいウィンドウを使うのが推奨されているようです。

WordPressのプラグイン
external-link-rewriter

サイト運営方針について

1月 10th, 2011 by admin

本サイトは、Pythonを勉強していく過程を公開していくために作成しました。GAE上でのWebアプリケーション開発を中心に勉強していく予定ですが、それ以外のテーマの記事も書いていく予定です。系統だった内容は固定ページとして、雑多な内容は投稿として公開していきます。相互リンク、間違いの指摘など、大歓迎です。まだ本格的にPythonの勉強を始めて2週間ほどなのですが、よろしくお願いします!

公開中の成果物

GAE/PythonブログにWPデザインを適用

1月 10th, 2011 by admin

python-blog-systemにWordpress風のデザインを組み込んでみました。まだ、細かい部分は調整できていませんが、雰囲気はかなりWordpressっぽくなったのではないでしょうか?Wordpress3のデフォルトのデザインを真似しただけあって、一般受けするデザインにはなったのですが、余分なスペースが多く、好きになれないデザインなので、今後の開発は「デザイン適用前」のものをベースに進めようと思います。

デザイン適用後

python-blog-system

python-blog-system

デザイン適用前

python-blog-system

python-blog-system