タグ付けされた質問 「performance」

2
マイクロカーネルとモノリシックカーネルのパフォーマンス
マイクロカーネルは、すべてのドライバーをユーザー空間プログラムとして実装し、カーネル自体にIPCなどのコア機能を実装します。ただし、モノリシックカーネルは、ドライバーをカーネルの一部として実装します(たとえば、カーネルモードで実行されます)。 マイクロカーネルはユーザー空間のドライバー間でメッセージの受け渡しを処理する必要があるため、モノリシックカーネルよりも遅いといういくつかの主張を読みました。これは本当ですか? 長い間、ほとんどのカーネルはモノリシックでした。これは、ハードウェアの速度が遅すぎてマイクロカーネルをすばやく実行できないためです。ただし、GNU / Hurd、Mac OS X、Windows NTラインなど、多くのマイクロカーネルとハイブリッドカーネルが存在するようになりました。 それで、マイクロカーネルのパフォーマンスについて何か変更はありましたか?このマイクロカーネルへの批判は今日でも有効ですか?

6
間隔内の2つの数値の最大XORを見つける:二次式よりも良いことはできますか?
lllrrr L ≤ I 、最大(I ⊕ J )最大(私⊕j)\max{(i\oplus j)}L ≤ I 、J ≤ Rl≤私、j≤rl\le i,\,j\le r ナイーブアルゴリズムは、考えられるすべてのペアを単純にチェックします。たとえば、ルビーでは次のようになります。 def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j > max) max = i ^ j end end end max end 私感私たちはより良い次より行うことができます。この問題のためのより良いアルゴリズムはありますか?

4
なぜ抽象化と速度を犠牲にする必要があるのですか?
高水準言語が速度の点で低水準言語に到達できないように見えるのはなぜですか?高水準言語の例としては、Python、Haskell、Javaがあります。低レベル言語を定義するのは難しいですが、Cを例に考えてみましょう。比較はインターネット1のいたるところにあり、Cの方がはるかに高速で、時には10倍以上であることに同意しています。11^1 そのようなパフォーマンスの大きな違いを引き起こすのは何ですか?なぜ高級言語が追い付かないのですか? 最初はこれがすべてのコンパイラーの責任であり、将来的には改善されると信じていましたが、最も人気のある高水準言語のいくつかは何十年も前から存在しており、速度に関してはまだ遅れています。C構文ツリーと同様にコンパイルして、マシンコードを生成する同じ手順を実行することはできませんか?それとも構文自体に関係があるのでしょうか? 例:11^1 コンピュータ言語ベンチマークゲーム ジュリアのベンチマークページ

5
OS設計で消費電力を削減できるのはなぜですか?
私は、AndroidやiOSのようなOSがバッテリー寿命を改善するために何らかの形で最適化されていることを読みました。 私の理解では、私はあなたが必要な操作の数を減らすことによって、アプリケーションをスピードアップすることができると思いますので、CPUは、一定時間内に操作が一定数を実行していることですが、CPUがまだ行いますので、Xに操業をyの時、それはいけません力に影響? また、プロセスがより多くのRAMを使用する場合、それはより多くの電力を消費しますか?

3
(衝突のない)ハッシュテーブル検索は本当にO(1)なのですか?
免責事項:私はこことStackoverflowで同様の聞こえる質問があることを知っています。しかし、それらはすべて衝突についてであり、それは私が求めているものではありません。 私の質問は次のとおりです。なぜそもそも衝突のないルックアップなのO(1)ですか? 私がこのハッシュテーブルを持っているとしましょう: Hash Content ------------- ghdjg Data1 hgdzs Data2 eruit Data3 xcnvb Data4 mkwer Data5 rtzww Data6 今、私はkハッシュ関数h(k)が与えるキーを探していますh(k) = mkwer。しかし、ルックアップはハッシュmkwerが5の位置にあることをどのように「知っている」のでしょうか。それO(n)を見つけるためにすべてのキーをスクロールする必要がないのはなぜですか?ハッシュは、実際のハードウェアアドレスではあり得ません。データを移動する能力を失うからです。そして、私の知る限りでは、ハッシュテーブルはハッシュでソートされていません(そうであったとしても、検索にも時間がかかりますO(log n))? ハッシュを知ることは、テーブル内の正しい場所を見つけるのにどのように役立ちますか?

1
ハイパースレッディングを使用するとパフォーマンスが低下する理由
ハイパースレッディングがパフォーマンスの低下につながることを、このようなさまざまな場所で読んだことがあります。 ハイパースレッディングがパフォーマンスの低下を引き起こす理由と方法を理解できません。 なぜハイパースレッディングによってOSが空きリソースを利用できるようになっても、パフォーマンスが低下するのはなぜですか。 ベンチマークはハイパースレッディングを原因として示していますが、誰かがこの理由を説明できます。 ありがとう

2
高速ハッシュ:ファイルの変更を識別するためのさまざまな手法の組み合わせ?
ファイルが同じかどうかをすばやく検出する方法を作成したいと思います。ほぼ100%の確実性のために、既存のハッシュアルゴリズム(SHA256など)を使用します。ただし、ファイルは数GBの巨大なビデオファイルであることが想定されているため、SHA256ハッシュの計算には、特にネットワーク上で時間がかかる場合があります。 したがって、他のさまざまな手法を組み合わせたいと思います。 ファイルサイズ:ファイルサイズが変更された場合、コンテンツは変更されました(確か) 頭/尾ハッシュ ランダムハッシュ 後者の2つは私の質問の一部です。 私の推測では、ヘッダーには次のようなものがあります: フレームレート(ビデオなど) 解像度(ビデオ、画像など) (ファイル)長さ(フレーム、ピクセルなど) 最終変更日(例:動画ではなくWord文書) 尾をチェックすることを検討する理由は次のとおりです。 MP3にはタグ情報があります EXIFが正しい場合は、最後にカスタムデータを追加します ランダムハッシュは、ファイル内のランダムな位置にある特定の長さ(例:64 kB)の126の領域を選択し、それらのハッシュを作成します。もちろん、後で比較するためにオフセットを覚えています。全体として、ハッシュには(1 + 126 + 1)* 64 kBのデータを使用するので、ハッシュを取得するには、数GBではなく8 MBを読み取るだけで済みます。 たぶん今は数学の問題でしょうが、ファイルサイズ、ヘッド、テール、ランダムデータの組み合わせを使用して変更を検出し、このクイックハッシュサムを生成する可能性はどのくらいありますか? ファイルは常に正当なファイルであると思います。シングルバイトを操作するメリットはありません。ユーザーは通常のビデオ編集ツールを使用してファイルを変更します。 更新:私はCrypto.StackExchangeからのこの回答を受け入れませんでした。私の提案は暗号化されておらず、安全であることを意図していないことに同意します。また、ファイルのCRC処理が高速であることにも同意しますが、私の場合は本当にハッシュが必要です。その理由を説明します。 私のアプリケーションでは、ブックマークをビデオに保存することが期待されています。私のデータベースは、ビデオハッシュとブックマークを保存することが期待されています。 ユーザーがファイルを移動または名前変更することがあります。私のプログラムは、ファイルが存在しないことを認識しますが、データベースからブックマークを削除しません。代わりに、同じビデオが(誤って)再度再生されたときに、(おそらく)同じファイルであることを認識したいと思います。 ユーザーは、ネットワークドライブ(NAS)にファイルを保存し、ビデオをストリーミングする必要があります。それらはダムストレージです。サーバーコンポーネントをインストールできません。そして、それらはかなり遅いかもしれないので、私は本当に完全なハッシュを望んでいません。3 GBファイルのフルハッシュの計算には、ハッシュアルゴリズムの速度に関係なく、10 MB /秒で少なくとも5分かかります。 ユーザーがファイルを編集した場合、どういうわけかハッシュが一致しないことを期待します。そうしないと、間違ったブックマークが表示されてしまうからです。 正しいブックマークを取得できる可能性は約80%です。ハッシュピースをいくつまとめて、ファイルのどこに配置すればよいですか?

2
一対の製品のGCD
私には2つの数値があり、それぞれが私が知っている多数の小さい数値の積です。これら2つの数値のGCD(最大公約数)を見つけたい。プロセスを高速化するために必要な部分分解を利用する方法はありますか? 特に、大きい数値はそれぞれ小さい数値の積であり、それぞれの数値は2 ^ {4000}のオーダーです。小さい数の因数分解については何も知りません。2152152^{15}24000240002^{4000} 編集:入力数は約120,000,000ビットですが、GCDは約500,000ビットです。数字の要素は特に順番に並んでいます。それらはすべて連続した範囲の整数です。 私が見たすべてのGCDアルゴリズムは、部分的に因数分解された形式などではなく、直接数値を使用します。この情報を組み込んでスピードアップできるアルゴリズムはありますか?

3
連続するXOR値の最大値と最小値を見つける
整数配列(最大サイズ50000)指定された、Iは最小値と最大見つけなければならない例えば一部について、と。X = P ⊕ P + 1 ⊕ ⋯ ⊕ A Q P Q P ≤ QXXXX=ap⊕ap+1⊕⋯⊕aqX=ap⊕ap+1⊕⋯⊕aqX = a_p \oplus a_{p+1} \oplus \dots \oplus a_qpppqqqp≤qp≤qp \leq q 私はこのプロセスを試しました: for all。私はそれをで事前に計算し、次にいくつかの、の値を計算しては次のようになり:。したがって: I O (N )X P Q (P ≤ Q )X = 和Q ⊕ 和P - 1sumi=a0⊕a1⊕⋯⊕aisumi=a0⊕a1⊕⋯⊕ai\text{sum}_i = a_0 \oplus a_1 …

4
科学計算用の高速で無駄のないJavaScript:どの機能を維持する必要がありますか?
ここで私は数学教育の障壁を下げることに本当に興味があります。 目標: 私はJavaScriptコミュニティ用に作成されてほしいと思います。これは、Pythonベースの/リンクされた科学的および高性能なコンピューティングライブラリに相当します(それらのすばらしいリストはSageなどから入手できます)。そして私はそれを望んでいます。なぜなら、私は、JavaScriptを学ぶ人々が、Python(および会社)を学ぶ必要なく、科学的および数値計算に簡単に入ることができるようにしたいからです。(基本的にはいつかPythonを習得したので、Pythonを学ぶのは簡単ですが、これはおそらく、JavaScriptの制限されたサブセットをPythonにコンパイルするのが簡単になることを示唆しています。) 仮説法: 私がターゲットとしている市場(「人間のコンパイラー」)はすでにJavaScriptを知っているプログラマーであるため、私は主にJavaScriptとの違いが最小限の新しい言語に興味があります。私がそれらの人々をターゲットにしたいのは、RPythonとCythonがPythonで行うように、より高速なCにコンパイルするコードを書くための最小限の異なる言語を彼らに与えることです。私はたくさんのJavaScript機能を放棄するつもりです。最小限の機能を追加するように注意してください。Lua、Dart、ECMA Harmony(正式なリリース日はありません)を確実に調べます。 、または私は間違っていますか?)など。これらはすべて、JavaScriptの現在の(2012)実装に非常によく似ているためです。 疑わしい動機: 私は個人的に、物事をより速く実行できる言語/ツールセットを学びたいと思っています(このため、Erlangを自分で学習しています)が、ここでは特に、そのようなことをしていない他の人のためにバー(申し訳ありません)を下げることに興味があります意欲。これは、「ケーキを手に入れて食べたいので、問題の調査に時間をかけている」状況の1つにすぎません。私はコンピュータ言語設計の経験が非常に限られていますが、生態系のハッキングの観点から見ると、この問題は研究するのに十分興味深いと思われるので、すぐにもっと多くのことをしたいと思っています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.