Archive for 2月, 2011

【無料】GAE使ってみない?【無広告】

2月 27th, 2011 by

みなさん、Google App Engineって聞いたことありますか? あっ、それしってる。Google Docsとかでしょ?って思った方。惜しいけど違います。 Google App Engineとは.... Read more


python-blog-systemを改良

2月 27th, 2011 by

今日はpython-blog-systemの改良を進めていました。といっても新機能を実装したというよりは、不具合修正やら、設定の外部化やら地味な作業が中心でした。 ソースコードはこちら https:/.... Read more


python-blog-systemをgithubに登録

2月 27th, 2011 by

python-blog-systemのソースコードをgithubに登録しました。まだまだ完成度の低いブログシステムですが、参考にしていただければと思います。forkして改造したり、機能の改善点や、バグ.... Read more


本日の予定

2月 26th, 2011 by

今日は、昼間にちょっとした事故があったのですが、落ち込んでいても仕方がないので勉強はじめます。しばらくGitの勉強をして、プロジェクトをGitHubに登録したあと、Pythonで何かやろうと思います。.... Read more


gaecronの許可ユーザ数を80に変更

2月 25th, 2011 by

gaecronを運用しているのですが、残アカウント数が少なくなってきたにもかかわらず、リソースにかなりの余裕があるので、ユーザ数上限を50から80に増やしました。最もリソース使用率の高い、Inboun.... Read more


MacBookPro注文しました

2月 25th, 2011 by

衝動買い・・ではないです。予定通りです。でたら買うつもりだったので。 ご注文された商品 数量 単価 商品合計 15インチ MacBook Pro 製品番号: Z0LZ iWork(プリインストール) .... Read more


WordPress3.1にアップデート

2月 24th, 2011 by

このサイトはWordpressで運営しているのですが、先ほどWordpress3.1にアップデートいたしました。アップデートはボタン1つで終わるのですが、アップデート処理に約5分程度かかりました。閲覧.... Read more


本日の作業予定

2月 24th, 2011 by

Gitについて軽く勉強してから、python-blog-systemのソースコードをGitHubに登録しようと思います。 .... Read more


db.Modelに@Propertyを追加

2月 24th, 2011 by

PySNSの日記の投稿日時表記をUTCからJSTに変更しました。日時計算を複数回実装するのはDRYの原則に反するので、Modelにプロパティーを追加し、そのプロパティーの値を表示するように変更しました.... Read more


hackme、Lv3は突破できた

2月 23rd, 2011 by

Lv3は突破できた。穴っぽいとこに穴はあって、普通に掘り進めば解けた感じ。まー、がんばればなんとかなるとおもう。 だけど、Lv4は怪しい所すら見当たらない。画面の配色変わったけど、これって特に意味ない.... Read more


pySNSを微調整

2月 23rd, 2011 by

今日は、hakemeで遊んでしまい、pySNSの開発はほとんど進みませんでした。ユーザ数表示の追加と、全体のリファクタリングをしかできませんでした。 hackmeはLv2まで突破できました。エラーメッ.... Read more


本日の実装結果

2月 22nd, 2011 by

今日はPySNSの実装を進めました。仮ではありますが、友達システムが動作するようになりました。 当初の予定 実装予定の機能 ・友達登録機能 ・日記への画像添付機能 ・プロフィール画面にプロフィール画像.... Read more


GAE/Python デプロイ遅延中

2月 21st, 2011 by

先ほどからGAE/Python環境、デプロイがし辛い状況になっています。そのうち解消すると思うので、ローカルで出来る開発を進めます。 ::CODECOLORER_BLOCK_5:: .... Read more


本日はPySNSに機能追加します

2月 21st, 2011 by

実装予定の機能 ・友達登録機能 ・日記への画像添付機能 ・プロフィール画面にプロフィール画像を表示 ・友達の日記表示機能 2時間ほどしか作業できなさそうなので、どこまで出来るかは疑問です。午後10時頃.... Read more


PythonでSNS

2月 21st, 2011 by

PythonでSNSを作ってみることにしました。 実装済みの機能は Googleアカウントでのログイン アカウント(名前)の設定 日記の投稿 全体日記の閲覧 プロフィール画像の設定 です。 友達.... Read more


エンコードエラー

2月 20th, 2011 by

エンコード関連ではまったので共有しておきます。 ベースとなるコード 日本語の部分がユニコード文字列になっていないのが不安ですが、動作します。 ::CODECOLORER_BLOCK_6:: 動かないコ.... Read more


GAE/Pの管理画面でDataStoreを操作

2月 19th, 2011 by

app.yamlの末尾に以下の2行を追記しておけば、GAEの管理画面でDataStoreのメンテナンス出来ます。 ::CODECOLORER_BLOCK_15:: .... Read more


今週末の予定

2月 19th, 2011 by

ちょっと大きめのWebアプリを開発中です。Webアプリ自体は公開できないかもしれませんが、途中で気がついたことをいくつか記事にまとめようと思ってます。 ブログを何点か改良(改悪?)しました。 ブログ.... Read more


単語リスト

2月 19th, 2011 by

英単語の出現頻度を利用したアプリを作ろうと思い、その下準備として単語リストを作りました。大文字・小文字、過去形、三人称単数現在形のsなどもそのままの形で収録されています。実際に、アプリに組み込むときは、大文字・小文字の統一ぐらいはしたほうがよさそうです。10001-20000番目の単語のリストも作ろうと思ったのですが、途中の単語が1000個欠落してたので、諦めました。

出典: Wiktionary:Frequency lists/Project Gutenberg 1-10000

Wiktionary:Frequency lists/Project Gutenberg 1-10000

1行100単語 × 100行です。行内の単語はスペース区切りになっています。

GAE/P DataStore vs Memcached

2月 18th, 2011 by

昨日のDataStoreの書き込み性能の測定の続きで、DataStoreの読み込みとMemcachedの読み書きの性能を測定した。

比較内容

以下の5項目の測定を行った。100バイトの読み書き50回を1セットとして、10回測定しグラフを作成した。

  • Store/W
    DataStoreへの保存
  • Store/R
    DataStoreから1レコード取得
  • Mem/W
    Memcachedへの保存
  • Mem/R – s
    Memcachedからの読込。データが存在する場合。
  • Mem/R – m
    Memcachedからの読込。データが存在しない場合。

結果グラフ

縦軸は1回当たりの処理時間(単位ms)、横軸は10回分の測定結果。

datastore_vs_memcached

datastore_vs_memcached

結果考察

MemcachedのReadが最も高速で、MemcachedのWrite、DataStoreのRead、DataStoreのWriteと順に遅くなった。平均処理時間と、MemcachedのReadを1とした時の実行時間を表にまとめてみた。

Store/W Store/R Mem/W Mem/R-s Mem/R-m
時間[ms] 17.94 7.1 2.29 2.12 2.07
Mem/R比 8.68 3.43 1.11 1.02 1

csv2table

この結果から、Memcachedの性能は、DataStoreと比べてReadで3倍程度、Writeで8倍程度高速であることが分かる。Memcachedのキャッシュヒット率が50%を超えるようなサービスであれば、Memcached導入によるパフォーマンスアップが期待できそうだ。

測定用プログラム

測定に用いたプログラムを掲載しておく。

  • Python

  • 人気記事

      このエントリーは、Python入門者と、Python入門予備軍の方を対象としています。 どうしてPythonやるの? Pythonって覚えやすい言語なんです。といっても、それなりに使いこなせるようにな.... Read more

      リスト内包表記とは、あるリストを元にして別のリストを作るための記法のことです。ループ、Map、Filterなどを使っても同じ操作をできますが、リスト内包表記には以下の利点があります。 コードがシンプ.... Read more

      Pythonには固有の文字列フォーマット(モジュロ)操作が用意されている。文字列中の%?であらわされる部分が、文字列の後ろに与えられた変数で置換される。 単一値の置換 単一の変数を置換する場合は、文字.... Read more

      Pythonの世界は、整数などの単純な値も含め、すべての値はobjectクラスを継承したクラスのインスタンスでできています。 ::CODECOLORER_BLOCK_59:: classを定義する も.... Read more

      だまって↓インストールすれば、Facebookのコメントプラグインがすべての投稿とページにつくよ。動かなかったらごめん。 wp-facebook-comment .... Read more

      リスト(List)とはPythonの組み込み型の1つで、シーケンス(sequence)の一種です。他の言語におけるインデックス配列に似ていますが、かなり柔軟な操作ができます。このページではリストをつか.... Read more

      Pythonでは、print文を使わないと日本語を正しく出力されない。print文を使うと、あらかじめ設定されているエンコードにしたがって適切に出力される。 ::CODECOLORER_BLOCK_8.... Read more

      プログラム内でループを使うのは以下の3パターン。C言語などになれていると1番や2番を使いたくなるかもしれないが、Pythonでは3番が適してるケースが多い。 N回ループ一番基本的なタイプ 条件を満た.... Read more

      みなさん、Google App Engineって聞いたことありますか? あっ、それしってる。Google Docsとかでしょ?って思った方。惜しいけど違います。 Google App Engineとは.... Read more

      DataStoreとは 本記事内のDataStoreは、GoogleAppEngineのデータストアのことを指す。GoogleAppEngineは、ファイルの書き込みが一切できないため、DataSto.... Read more

      GAE/Pythonで、一体いつになったらPython3系が使えるようになるのか。興味深いページがあったのでざっくり翻訳してみました。 http://code.google.com/p/googlea.... Read more

      Pythonの文法構造には、単行のコメントアウトしかありません。 複数行のコメントアウトが必要な場合は、コメントを文字列にします。 単行コメントアウト #以降がコメントとして扱われます。 ::CODE.... Read more

      GoogleAppEngineでは、世界標準時で時刻を管理する。でも、そのまま表示すると分かりにくい。このページでは世界標準時を日本時間に変換したり、日本時間を世界標準時に変換する方法を紹介する。 現.... Read more

      昨夜、OAuthでの認証がうまくいったので、今日はTwitterのTLの取得と発言を実装してみた。 お試し環境 → http://nisetwitter.appspot.com/で公開している。 エラ.... Read more

      この10日間ほど、地震のニュースばかり追いかける日々をすごしていないでしょうか?大勢の方が被災され、原発関連の二次災害も発生する中で落ち着きづらいというのも事実なのですが、心配しすぎてもしかたない。そ.... Read more

      なんと、int型が64bitまで使えるんです。当たり前だけどうれしいです。 ::CODECOLORER_BLOCK_115:: windowsだと64bitCPU使っていてもこんな感じになります。In.... Read more

      Pythonの条件分岐は、if, else, elifの3つの構成要素から成ります。条件成立時、非成立時の実行範囲は、インデント(indent)であらわします。条件部 If elseから成る条件分岐 .... Read more

      Pythonには基本的な型として、数値、bool、文字列があります。type() を使うと変数の型を確認できます。 数値 数値を表す型には、整数型 、 長整数型 、浮動小数点型 、複素数型の4つがあり.... Read more

      タプルとは、シーケンス型のオブジェクトです。同じくシーケンス型のオブジェクトとの違いは、不変であるということです。リストは生成後に要素を追加したり削除したりできますが、タプルは生成後に内容を修正できま.... Read more

      GAE/Pythonで最初に戸惑うのはRequestHandlerだと思います。新規アプリケーション作成時に自動生成されるので必要に応じて書き換えることができれば問題ありません。 RequestHan.... Read more

      文字列は文字の列(シーケンス)のこと。文字列リテラルの表記方法は、以下の4つがある。 シングルクオーテーション1個‘string comes here’ ダブルクオーテーショ.... Read more

      モジュールとはPythonの定義や文が入ったファイルです。 標準モジュールや第3者によって公開されているモジュールを組み合わせることで、容易に高度な処理を実現できます。また、自作のモジュールを作ること.... Read more

      GoogleAppEngineでPythonを使う場合は、特別な理由がない限り、バージョン2.5を使いましょう。2.5以外の環境で開発すると、開発環境では動作していたアプリケーションが、GAEでは動作.... Read more

      ディクショナリ(dict)とは、他の言語でいうところの連想配列やハッシュと同じ機能を提供する。最近流行しているKey-Value型のデータストアもディクショナリの一種であるといえる。 辞書の作成 中.... Read more

  • タグ

  • Archives

  • Recent Comments

    • ブログロール


    Get Adobe Flash player