問題タブ [lua]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
588 参照

optimization - Lua チャレンジ: fannkuch 実装のパフォーマンスを改善できますか?

Lua は現在、最速のスクリプト言語であり、ある種のプログラムでは C/C++ よりもそれほど遅くはありません (pidgits 1:1 を実行する場合と同等)。ただし、C/C++ に対するいくつかのベンチマークでは、Lua のスコアが非常に悪いです。

それらの 1 つは fannkuch テスト (小さな整数シーケンスへのインデックス付きアクセス) で、1:148 という恐ろしいスコアを付けます。

では、これをどのように最適化できますか (もちろん、他の最適化と同様に、より高速であることを確認するために実装を測定する必要があります)。また、Lua の C コアを変更したり、LuaJit を使用したりすることは許可されていません。それは、Lua の弱点の 1 つを最適化する方法を見つけることです。

0 投票する
9 に答える
4039 参照

optimization - Lua チャレンジ: マンデルブロー実装のパフォーマンスを改善できますか?

ステータス:これまでのところ、最良の回答のプログラムは元のプログラムの 33% の時間で実行されています! しかし、おそらくそれを最適化する他の方法がまだあるでしょう。


Lua は現在、最速のスクリプト言語ですが、C/C++ に対するいくつかのベンチマークでは、Lua のスコアが非常に低くなっています。

それらの 1 つは、マンデルブロ テスト (マンデルブロ セット ポータブル ビットマップ ファイル N=16,000 を生成) で、1:109 (マルチ コア) または 1:28 (シングル コア) という恐ろしいスコアを付けます。

速度のデルタが非常に大きいため、これは最適化の良い候補です。また、Mike Pall が誰であるかを知っている人は、これ以上最適化することはできないと考えるかもしれませんが、それは明らかに間違っています。最適化を行ったことがある人なら誰でも、常に改善できることを知っています。それに加えて、いくつかの微調整で追加のパフォーマンスを得ることができたので、それが可能であることを知っています:)

では、これをどのように最適化できますか (もちろん、他の最適化と同様に、より高速であることを確認するために実装を測定する必要があります)。また、Lua の C コアを変更したり、LuaJit を使用したりすることは許可されていません。それは、Lua の弱点の 1 つを最適化する方法を見つけることです。

編集:チャレンジをより楽しくするために、これに賞金をかけます。

0 投票する
1 に答える
364 参照

optimization - Lua チャレンジ: スペクトルノルムの実装のパフォーマンスを改善できますか?

Lua は現在、最速のスクリプト言語であり、ある種のプログラムでは C/C++ よりもそれほど遅くはありません (pidgits 1:1 を実行する場合と同等)。ただし、C/C++ に対するいくつかのベンチマークでは、Lua のスコアは非常に悪いです。

それらの 1 つは、スペクトル ノルム テスト (べき乗法 N=5,500 を使用した固有値) であり、1:148 という恐ろしいスコアが付けられます。

では、これをどのように最適化できますか (もちろん、他の最適化と同様に、より高速であることを確認するために実装を測定する必要があります)。また、Lua の C コアを変更したり、LuaJit を使用したりすることは許可されていません。それは、Lua の弱点の 1 つを最適化する方法を見つけることです。

0 投票する
7 に答える
13057 参照

scripting - Lua スクリプトを開始する

私は Lua の学習を余儀なくされている段階にあるので、これを行う方法について何か提案はありますか? PHP 以外のスクリプト言語については、あまり経験がありません。

それで、「ヘッドスタートLua」ページに関するいくつかの提案はありますか?

編集

すばらしいチュートリアル ページへの追加として、Lua の学習に役立つ「プログラム」を提案していただけませんか? C++ でポインターを学びたいと想像してみてください。Linked List を作成します。私は Lua の基本に触れたいと思っていますが、それまでの間、かなり高度なものにもオープンでありたいと思っています。

0 投票する
8 に答える
3062 参照

scripting - Lua のような組み込みスクリプト言語を使用するのが良い場合

私は約 2 年間 WoW をプレイしており、アドオンの作成に使用される Lua に非常に興味がありました。Lua についてこれまで読んできたのは「速い」「軽い」「これは素晴らしい」というものだったので、いつ、どのように使用するかを考えていました。

Lua のようなスクリプト言語をシステムに組み込む必要がある典型的な状況はどのようなものですか?

0 投票する
2 に答える
1748 参照

c++ - swig でラップされた C++ クラスのインスタンスを lua スタックにプッシュするにはどうすればよいですか?

swig でラップされ、lua に登録されたクラスがあります。このクラスのインスタンスを lua スクリプトで作成でき、すべて正常に動作します。

しかし、新しい X への呼び出しを使用して C++ コードで作成されたクラスのインスタンスがあり、呼び出したい関数を含む la lua_state L があり、1 つの引数、X のインスタンスを受け入れるとします...その関数を呼び出すにはどうすればよいですか。これが問題のコードの(一部)です(エラー処理のものは省略しました):

main.cpp

mainmenu.lua

現時点で私が見つけたのは、swig で生成された cpp ファイルからいくつかの機能を公開し、それを呼び出すことだけです。これにはいくつかの理由があります...複数のモジュールがある場合は機能せず、swig ファイルのデフォルトのリンケージ仕様を変更する必要がありました (-DSWIGRUNTIME= を使用)。

以下を main.cpp に追加します

モジュールへのポインターを取得し、次に型へのポインターを取得し、swigs 関数を呼び出して登録します。人間が読めるはずのないファイルを掘り下げなければならないのは不合理なことでした (そのため、ファイルの上部に記載されています)。(しかし、それは機能します!)

確かに、私がやろうとしていることを達成するためのより良い方法があります。

高レベルの pov からの PS 私が望むのは、GuiInst の Object Factory によって作成された Gui コンポーネントを lua が参照しないようにすることです。いくつかの非常に単純な (そして非 swig) Python モジュールを除いて、スクリプト言語に機能を公開するのはこれが初めてなので、アドバイスを受ける準備ができています。

アドバイスをありがとう!


RBerteig によるコメントへの応答

GuiInst のコンストラクターは、lua がそのインスタンスを構築するのを防ぐために、swig が実行されるときにプライベートに #defined されるため、私にとってはうまくいきません。私が防ごうとしていたのは次のことでした(luaで):

これは "g=new GuiButton" を呼び出し、GuiRegionVertical (さまざまな理由でポインターを格納する必要があります) に登録し、"delete g" を呼び出します。GuiRegionVertical には g へのポインターがぶら下がったままになります。

本当に必要なことは、GuiRegionVertical::Add(GuiButton*) が GuiButton* の参照カウントをインクリメントし、GuiRegionVertical のデストラクタがすべてのコンテンツの参照カウントをデクリメントすることだと思いますが、これがどのように行われるかはわかりませんスウィグで行われます。

これにより、プライベート コンストラクター、Gui オブジェクト ファクトリ、厄介な外部関数が不要になります。

私はこれについて間違っていますか?

ありがとう。

0 投票する
15 に答える
81463 参照

lua - Luaテーブルを値でコピーするにはどうすればよいですか?

最近、次のような Lua コードを少し書きました。

変数は、Lua のテーブル自体の値ではなく、匿名テーブルへの参照を保持するため、明らかに、それは私がやりたかったことではありません。これはProgramming in Luaで明確に説明されていますが、忘れていました。

問題はcopy = a、値のコピーを取得する代わりに、何を書くべきかということaです。

0 投票する
4 に答える
2518 参照

lua - 低レベルの Lua インタープリター

標準の「lua_pcall」関数呼び出しよりも細かいレベルで C/C++ プログラムから Lua コードを実行する方法はありますか? 理想的には、低レベルのバイトコード命令のリストをループして (そのようなものがあると仮定して)、それらを 1 つずつ実行できるようにしたいと考えています。これにより、実行するだけでなく、より多くのことを制御できる独自のスケジューラーを作成できます。最初から最後まで完全な Lua 関数。

これを行う理由は、Lua コードが呼び出すことができる C 関数を実装したいためです。これにより、実行を続行する前に、プログラムが特定の (潜在的に長い時間がかかる) アクションが完了するまで待機するようになります。典型的な Lua スクリプトでは、このような関数呼び出しの割合が高いため、アクションが完了したらコールバックを使用するように書き直すという考えは、実際には実用的ではありません。

0 投票する
4 に答える
34312 参照

lua - Luaのハッシュテーブルのキーの数を取得するにはどうすればよいですか?

キーの数を取得するために、実際にテーブル内の項目を反復処理する必要がありますか?