問題タブ [code-size]
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.
c++ - MAP ファイルの分析 - コード サイズの原因は?
大規模な C++ プロジェクト (VC6) のリンカー マップ ファイルの分析を簡素化するツールを探しています。
メンテナンス中、バイナリは着実に成長しており、それがどこから来たのかを突き止めたいと思っています。異なる DLL 間で共有されているライブラリ内の過度のテンプレート展開が疑われますが、マップ ファイルを参照しても良い手がかりは得られません。
助言がありますか?
parallel-processing - コードサイズに基づく並列化の費用対効果?
コード サイズに基づいて、特定のコード ブロックを並列化する価値があるかどうかをどのように判断しますか? 次の計算は正しいですか?
推定:
- CPU ごとに 1 つのスレッドで構成されるスレッド プール。
- 実行時間がXミリ秒の CPU バウンド コード ブロック。
Y = min(number of CPUs, number of concurrent requests)
したがって:
- コスト: コードの複雑さ、潜在的なバグ
- メリット:
(X * Y)
ミリ秒
私の結論は、XまたはYの値が小さい場合は並列化する価値がないということです。「小さい」とは、リクエストの応答性に依存します。
c++ - C/C++ アプリケーションで過剰なコード サイズをプロファイリングするためのテクニックまたはツールは何ですか?
私が実際に行っていることを期待するよりもはるかに大きなコードを生成する C++ ライブラリがあります。ソースの 50K 行未満から、ほぼ 4 MB の共有オブジェクトと 9 をプッシュする静的アーカイブを取得します。コード サイズで KB。-Os のようなフラグを付けてライブラリをコンパイルすると、これはいくらか助けられますが、実際にはあまり役に立ちません。
また、GCC の -frepo コマンド (私が見たすべてのドキュメントでは、Linux では collect2 が重複したテンプレートをとにかくマージすることを示唆していますが) と、多くの重複が「ありそうな」と思われるテンプレートでの明示的なテンプレートのインスタンス化についても実験しましたが、どちらの場合でも実際の効果。もちろん、私が「可能性が高い」と言ったのは、あらゆる種類のプロファイリングと同様に、このような盲目的な推測はほとんどの場合間違っているからです。
コードサイズのプロファイリングを簡単にするツール、または何がそんなに多くのスペースを占めているかを把握できる他の方法、またはより一般的には、他に試してみるべきことはありますか? Linux で動作するものが理想的ですが、入手できるものを使用します。
java - Javaでの「コードが大きすぎます」コンパイルエラー
Javaのコードの最大サイズはありますか?10,000行以上の関数を書きました。実際には、各行は配列変数に値を割り当てます。
そして、コンパイル中に、このエラーが発生します:コードが大きすぎます
どうすればこれを克服できますか?
function - 長い初期化メソッドを持つのは悪い習慣ですか?
多くの 人が関数のサイズについて議論しています。彼らは、一般的に機能はかなり短くすべきだと言っています。意見は、15 行程度のものから「1 画面程度」までさまざまで、現在ではおそらく 40 ~ 80 行程度です。
また、関数は常に 1 つのタスクのみを実行する必要があります。
ただし、コードの両方の基準で頻繁に失敗する関数の種類が 1 つあります。初期化関数です。
たとえば、オーディオ アプリケーションでは、オーディオ ハードウェア/API をセットアップし、オーディオ データを適切な形式に変換し、オブジェクトの状態を適切に初期化する必要があります。これらは明らかに 3 つの異なるタスクであり、API によっては、簡単に 50 行を超えることもあります。
init-functions の特徴は、一般に 1 回だけ呼び出されるため、コンポーネントを再利用する必要がないことです。それでもそれらをいくつかの小さな関数に分割しますか?大きな初期化関数は問題ないと思いますか?
frameworks - 標準ライブラリのサイズは言語ごとにどのように比較されますか
最近誰かが、jQuery がいかに優れているか、それによって javascript がいかに楽しくなったか、そしてソース コード全体が (そして 1 つのファイルで) いかに小さかったかについて絶賛していました。
www.ohloh.net/で調べたところ、約30,000行のJavaScriptであるとのことでしたが、wcにパイプされたcurlに疲れたとき、約5000行でした(テストスイートなどの奇妙な不一致ですか?)。
私が聞いたところによると、javascriptには楽しい動的なトリックがたくさんあるので、それほど奇妙ではないと思いました。おそらく小さなライブラリでうまくいくでしょう。
しかし、その後、大規模な標準ライブラリを備えた他の高水準言語について考え、python/ruby/haskell/pharo(smalltalk)/*ml/etc の標準がどれほど大きいか疑問に思いました。(ライブラリは、それを分離できる程度にVMのものではありません)
誰か知ってる?詳細 (コメント/空白/コード行、テスト コード行、言語の行と ffi/バイトコードの行) を歓迎します!
編集:ps。メガフレームワークのサイズをリストしていただければ、おまけとしてjQueryについて尋ね始めたので、メガフレームワークは非常に多くを提供するため、言語yでxメガフレームワークを使用している人々は、yではなくxyまたはxでのプログラミングについて言及する場合があります。 (つまり、qt、jQuery など)。
programming-languages - 関数型言語が本当に簡潔であるなら、なぜそれらは言語シュートアウトゲームでより良いランクを持っていないのですか?
言語シュートアウトゲームの言語を、コードサイズのみで比較しました。これが私が得たものの要約です(最初に最短で、同様のスコアでグループ化されています)。
- Python、Ruby、JavaScript、Perl、Lua、PHP、Mozart / OZ
- OCaml、Erlang、Racket、Go、Scala、F#、Smalltalk
- Pascal、Clean、Haskell、Common Lisp、C#、Java、C
- C ++、Ada、ATS
なんでだろうか。勝者は、昔ながらの動的言語のようです。Erlang、Racket(nee PLTスキーム)、およびF#は問題なく動作しています。HaskellとCommonLispは、主張されているJavaよりも簡潔に見えません。
アップデート:
このトピックに関する洞察に満ちた投稿をグラフで見つけました。私はまた、より大きなプログラム(単純なレイトレーサー)の言語の同様の比較を見つけました。全体として、私は「その」答えを得たとは言いませんが、私は考えるためのいくつかの食べ物を手に入れました。
.net - .NETCILコードサイズ
コンパイルされたCILを見ると、コードサイズがコンパイルされたCILに含まれていることがわかります。コメントアウトされています。以下は例です
C#:
CIL:
コードサイズは何を表していますか?
php - 20,000 回線の単一クラスを使用する場合の「パフォーマンスへの影響」
この質問は以前にここで尋ねられましたが、実際に尋ねられた質問に実際に答えようとした回答はなかったので、別の方法で質問しています。数百の関数を含む 20,000 行の単一のクラスをロードすることは、コードをそれぞれの関数が少ない小さなクラスに分割し、必要に応じてこれらの小さなクラスをロードするよりも、リソースを集中的に使用しますか?
assembly - x86命令の長さを知る方法は?
アセンブリのさまざまな命令を見ていましたが、さまざまなオペランドとオペコードの長さがどのように決定されるかについて混乱しています。
それはあなたが経験から知っておくべきことですか、それともどのオペランド/演算子の組み合わせが何バイトを占めるかを知る方法がありますか?
例:
したがって、問題は次のとおりです。
与えられた命令を見て、そのオペコードが必要とするバイト数をどのように推測できますか?