日々適当

hibitekitou

Mavericksの圧縮メモリ

mac |2013-11-03
その動作をちょっとムービーで撮影してみて、要所要所で静止画を出してみております。

まずは、最初はこんな状態。スワップがちょっと発生しています。この時点でカーネルタスクのCPU時間は55時間オーバーです。



ここでAfter Effectsでムービーを再生します。AEの特徴として読み込んだ素材がキャッシュされるというのがあるため、メモリ使用量がガンガン増え、ついに物理メモリの上限32GB近くまで行き、そこで、「圧縮」の値が増加して行って、で、素材が全部読み込まれました。



スワップ使用領域が増えなかったので、QuickTIme 7 Playerでムービーを二本立ち上げ、再生しました。



圧縮の値はちょっと増えましたけど、スワップ使用領域は全く動きません。
なので、Photoshopで250MB強のファイルを開いてみました。



圧縮されている領域が激増しましたが、スワップには至らず。
ちょっとこの挙動は凄いかもと思った次第です。
んで、このような挙動を示すOS上で、スワップ使用領域が768KBあるってのは、俺は前回再起動させてからの55時間の間に、何をしていたんだと思ったりもしております。

それにしてもこの機能が全ての場面においてスムーズに動作するのなら、非常に有用ですよね。そして、今のところでだいたいスムーズです。全ての場面でスムーズなのかとは断言までは出来ませんけど、なかなかいい感じですな。
コメント ( 2 )|Trackback ( )

Sort Array with Key

xsi |2013-11-03
ICEのSort Array with Keyノードを見て、こんな関数はPythonに用意されていないのか?ってお話。



このノードは、キーとなる配列を使って配列をソートするというものっすね。マニュアルには
このノードを使用すると、配列のエレメントの値ではなく、キー配列のエレメントの値に基づいて配列をソートすることができます。
となっております。

たとえば [100, 200, 300, 400] という配列があったとして、それを [2,3,1,0] をキーとして並べ替えるとします。
[ 2,3,1,0 ] を並べ替えると [0, 1, 2, 3]になります。
言葉で書くと、1つ目の要素(2)は3番目に、2つ目の要素(3)は4番目に、3つ目の要素(1)は2番目に、4つ目の要素(0)は1番目にそれぞれ変更されたわけです。これと同様の変更を [100, 200, 300, 400] にも施しましょう、というのがこのノードの狙いで、けっこう便利に使っております。

んで、同じことをPythonでどう書くのだろうと思ったりしたわけですよ。調べてみると、以下のような書いてやればよいようです。


a = [100, 200, 300, 400]
b = [2,3,1,0]

c = zip(b,a)
c.sort()

sorted_b, sorted_a = zip(*c)

LogMessage('a:%s, b:%s'%(str(sorted_a), str(sorted_b)))
# INFO : a:(400, 300, 100, 200), b:(0, 1, 2, 3)

zip関数がミソでした。
zipで辞書としてまとめらたリストをソートして、その後またリストに分解しているという動作です。ソート時にその条件をlambda式あたりで指定してやることも出来るので、ICEのSort Array with Keyよりよほど自由度は高いわけですが、同じことならとりあえずシンプルにsort()でいい感じですな。
コメント ( 0 )|Trackback ( )
  ・