単純に
Maxscriptとpythonって
もちろんpythonの方が早いよね?
って事で超簡単なテストをやってみた。
まずはMaxscript。
getLocalTime(); for i = 1 to 1000 do ( Box pos:[x, 0, 0]; x = i * 3; ) getLocalTime();
お次はpython
import MaxPlus import time start = time.time() x = 0 for i in range(1000): box = MaxPlus.Factory.CreateGeomObject(MaxPlus.ClassIds.Box) b_node = MaxPlus.Factory.CreateNode(box, "MyBox" + str(i)) x = i * 3 b_node.Position = MaxPlus.Point3(x, 0, 0) elapsed_time = time.time() - start print(elapsed_time)
単純にmaxscriptとpython双方で箱を1000個作る実験をしたところ。
結果は
Maxscriptが1.4秒ほど。
pythonが0.5秒ほど。
やはりPythonの方が早かった。
もうちょっと複雑な処理になればpythonの速さが際立つと思う。
単純で簡単にかきたい場合はmaxscriptで書けば効率良いし
より処理を速くしたい場合はpythonにやらせればいい。
この辺りは好みの問題なだぁ。
と、この実験を何度か繰り返していたら
何故かMaxがフリーズ。
フリーズしたのはMaxscript側。
こんな単純なコードなのに、なんでフリーズしてん??
なにこれ??
しばらく色々探ってみたものの原因がつかめず。
そこで思い当たったのは・・・
これってもしかして何かゴミ溜まってる?
試しにMaxscriptの処理の最後に gc() を追加してみた。
まさかそんな単純な事なのかな?
最後にgc()を追加した状態で何度かMaxscriptを実行してみた。
するとフリーズすることがなくなった。
って事はやっぱり。ゴミ溜まってった?
確かに箱を1000作って消して、作って消してを繰り返していたら
メモリ不足になるかもだけれど、そんなことでMax止まってほしくないんだけど・・・。
あまり深く探っててもしようがないので、
とりあえず、大量処理をする場合はgc()は必要かも、って事で今日は終わり。
以上今日のメモでした。