2011-01-09 16 views
3

私は1024x1024の単色グリッドを実装したいと思います。任意のセルからデータを読み込み、さまざまな寸法の四角形を挿入する必要があります。リストにリストを作成しようとしました(2次元配列のように使用します)。ブール値のリストは整数のリストよりも遅いです...私は1dリストを試しています.2dより遅く、numpyは標準のpythonリストの約10倍遅く、見つかった最速の方法はPILと単色ですビットマップは "ロード"メソッドで使用されていますが、私はそれを高速に実行したいので、私はshedskinでコンパイルしようとしましたが、残念ながらそこにpilサポートはありません。 cまたはC++に?Python高速単色ビットマップ

+1

私はNumPyがあなたのために遅かったことに驚いています。どのように使っていたのですか?長方形を指定された値に設定するには、スライシング構文がうまく機能すると期待します。また、どのdtypesでテストしましたか? – user57368

+0

お使いのOSによっては、使用している基本的なGUIと直接会話するPythonインターフェイスを見つけることができるかもしれません。 – martineau

答えて

0

私が示唆しているひとつのことは、Pythonの組み込み配列クラス(http://docs.python.org/library/array.html)を使用しています。タイプは 'B'です。 1ピクセルあたり1バイトを使用すると、コーディングが最も簡単になりますが、メモリを節約したい場合は、8ビットをパックして独自のビット操作でアクセスできます。

2

Arrayを使っているRaphの提案は良いですが、実際にはCPython上では役に立たないでしょう。実際、PyPy(http:// pypy)で使用すると10-15%遅くなることが予想されます。 org /)私は優れた結果を期待しています。

0

私はCythonを調べて、PythonをCに簡単にコンパイルします(またはdistutilsを使用するとコンパイルされます)。 Cythonでコードをコンパイルするだけで、このような処理が高速になりますが、いくつかのcdef文を追加することで、はるかに高速化できます。 use it with Numpyの場合、Numpyアレイにすばやくアクセスできます。このようにCythonを使うと、スピードアップをかなり大きくすることができます。しかし、いくつかのサンプルコードを提供すれば、あなたの手助けがより簡単になります。