問題タブ [xs]

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 に答える
301 参照

perl - Perl XS コードから、再帰的に自分自身を呼び出すにはどうすればよいですか?

Pure Perl には複雑なエンコーディング関数があり、パフォーマンスを向上させるために XS に変換しています。

XS に変換している関数は、再帰的に自分自身を呼び出す必要があります。["man perlcall" のおかげで] call_sv を使用して Pure Perl 関数を呼び出す方法を確認できます。

しかし、XS 内から自分自身 (またはその他の XS 関数) を呼び出すにはどうすればよいのでしょうか?

(PS効率は非常に望ましいです...)

誰かヒントをくれませんか?それとも例?Ppp-お願いします!

更新: 最初の答えは完全に正しかったです。再帰的な純粋な C 関数の呼び出しは問題なく機能します。

0 投票する
3 に答える
250 参照

perl - Dist::Zilla を使用する XS モジュールのテスト

私は、多くの XS コードを持ち、Dist::Zillaパッケージの管理にも使用する Perl モジュールに取り組んでいます。物事を効率的にテストするための最良の方法は何ですか? については知ってdzil testいますが、呼び出されるたびにビルド/コンパイル/テストの完全なサイクルを実行するため、かなり遅いです。

前回のテスト以降に更新が必要な部分のみを更新し、t/*.tすべてではなく特定のテスト スクリプトのみを実行できると便利です。誰もが好きな解決策を持っていますか?

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

perl - RMAGICALとは?

私が継承したいくつかの XS コードを理解しようとしています。Perl マジックを呼び出すセクションにコメントを追加しようとしていますが、この行を理解するのに役立つドキュメントが見つかりません。

RMAGICALのためですか?Perl マジック変数を操作するとき、いつオンまたはオフにする必要がありますか?

アップデート

Perlguts Illustrated は非常に興味深いもので、RMAGICAL (「R」は「ランダム」を表す) に関する情報が少しありますが、それをいじるタイミングについては言及されていません: http://cpansearch.perl.org/src/ RURBAN/illguts-0.42/index.html

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

perl - 古いライブラリを Perl XS と PerlIO で動作させる

私はむしろ XS の初心者であり、15 年以上前の基になる C ライブラリを大量に使用する既存の XS モジュールを変更することを検討しています (実際、モジュールは基本的にこのライブラリに接着されています)。問題は、次のような PerlIO 文字列トリックを使用できるようにしたいということです。

$fh次に、ライブラリが予期している XS グルーに渡しFILEます。問題は、XS には次のようなものがあることです。

そして、私はそれが必要であると仮定します:

それ以上のことが必要なので、これはもちろん機能しません。_parseライブラリのコードを見ると、次のようになります。

FILE再び型で。今私が始めなければならない基本的な質問は - これはライブラリを変更しなくても可能ですか?つまり、XS を変更するだけで、文字列 PerlIO の動作から疑似ファイルハンドルを取得できますか?

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

c - XS このコードでメモリリーク?

このコードでメモリ リークが発生している場所を見つけることができません。

基本的に、2 次元配列を返す C 関数の XS ラッパーを作成したいと考えています。

C 関数:

XS ラッパー:

XSからは「配列の配列」が返ってきます。

Perl スクリプトでのテスト:

関数が呼び出されるたびにreturnArray()、Perl プロセスのコミット サイズが増加します。しかし、$arrayref変数は毎回ガベージコレクションされ、メモリ使用量は増加しないはずです。

XSで割り当てられたすべてのメモリを解放していることを願っています。しかし、まだメモリリークがあります。この XS コードのメモリ リークの何が問題なのですか?

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

csv - 改行を含む CSV を解析するための Text::CSV_XS perl モジュールの使用

Text::CSV_XS module次のオプションで CSV を解析するために使用しています。

CSV は、mysql LOAD DATA infile を使用して作成されます。NULL値がある場合は、フィールドにMYSQL追加します\N

データを解析する前に:

を使用するescape_char => "\\"場合、\Nは に置き換えられますN

解析後のデータ:

また、 double のデータ'\'は削除されます

例:D\\'Melloに変更D'Mello

削除するescape_char => "\\"と、データは次のように変更されます

解析前:

解析後:

この問題を解決する最善の方法は何ですか?