問題タブ [prefetch]
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 - Intel/AMD 64 ビットでの C でのバッファーのプリフェッチについて学習するための最適なリソース
などのプリフェッチ関連の機能をマスターすることに興味があります。
_mm_prefetch(...)
そのため、配列をループする操作を実行すると、メモリ帯域幅が完全に利用されます。これについて学ぶための最良のリソースは何ですか?
Intel Linux プラットフォームで GCC 4 シリーズを使用して C でこの作業を行っています。
subsonic - サブソニック プリロード オブジェクトと子
サブソニックで子グラフを含むオブジェクトのリストを読み込もうとしています。dataloadoptionsでlinq to sqlを使用してそれを行う方法を知っています
私はこのグラフを持っています
製品 - 場所 - 価格
new Select().From().Where(Product.Columns.Id).IsEqualTo(productId).ExecuteSingle();
製品オブジェクトに場所と価格をプリロードして、遅延ロードが多くのクエリを引き起こさないようにしたいと考えています。
ありがとう
linux - ハードウェアのプリフェッチをプログラムで無効にするにはどうすればよいですか?
ハードウェアのプリフェッチをプログラムで無効にしたいと考えています。
ハードウェアで実装されたプリフェッチャーを使用したインテル® Core™ マイクロアーキテクチャーでのアプリケーション・パフォーマンスの最適化と、32 ビットのインテル® アーキテクチャーでハードウェアとソフトウェアのプリフェッチを選択する方法から、 MSRを更新してハードウェアのプリフェッチを無効にする必要があります。
関連するスニペットは次のとおりです。
「DPL プリフェッチと L2 ストリーミング プリフェッチの設定は、
IA32_MISC_ENABLE
レジスタのビットを変更するためのデバイス ドライバ ユーティリティを作成することにより、プログラムで変更することもできMSR 0x1A0
ます。このようなユーティリティは、サーバーのダウンタイムを必要とせずに、プリフェッチ メカニズムを有効または無効にする機能を提供します。
次の表に、および L2 ストリーミング プリフェッチIA32_MISC_ENABLE MSR
を制御するために変更する必要があるのビットを示します。DPL
http://etallen.com/msr.htmlを使用してみましたが、うまくいきませんでした。私も直接使用wrmsr
してみましたが、セグメンテーション違反です。asm/msr.h
私はカーネルモジュールでこれをやろうとしました...そしてマシンを殺しました。
ところで-私はカーネル2.6.18-92.el5を使用しておりMSR
、カーネルにリンクしています:
prefetch - Windows XP で情報のプリフェッチが失敗し、アプリケーションの起動が中止される
Windows XP SP3 マシンでアプリケーションをコンパイルします。コンパイルしたら、それを起動しようとすると、Windows から次のような応答が返されます。
プログラム 'xx' を開始できません。アプリケーションの構成が正しくないため、このアプリケーションを開始できませんでした。マニフェスト ファイルを見直して、エラーの可能性を確認します。アプリケーションを再インストールすると、この問題が解決する場合があります。詳細については、アプリケーション イベント ログを参照してください。
DLL ファイルをコピーしようとしても役に立ちませんでした (必要に応じて、以前の質問を参照してください)。
次に、sysinternals から Process Monitor を起動しました。
それほど長くはないので、ここでレポートを要約しようと思います。
プロセスが開始され、次に最初のスレッドが開始されます。以下の呼び出しは次のとおりです:
私のexeファイルのQueryNameInformationFile() =>
私のexeファイルのSUCCESS Load Image() => ntdll.dllのSUCCESS Load
Image() => SUCCESS
QueryNameInformationFile() if my exe file => SUCCESS
CreateFile() C:\WINDOWS\Prefetch\blahbla.pf => NAME NOT FOUNDで作成しようとすると
、スレッドとプロセスが終了します。
そのフォルダー (C:\WINDOWS\prefetch) を完全に制御できるユーザーを追加しましたが、役に立ちませんでした。それを機能させる方法は?このステップを踏めば、私のアプリケーションは期待通りに動くと思います。
編集: エラーに関する procmon の詳細を追加します。
18:13:40,4305346 xxx.exe 3172 CreateFile C:\WINDOWS\Prefetch\XXX.EXE-1FA9609A.pf NAME NOT FOUND 目的のアクセス: 一般的な読み取り、配置: オープン、オプション: 同期 IO 非アラート、属性: n /a、ShareMode: なし、AllocationSize: なし
cpu-architecture - SSE プリフェッチ命令のサイズを決定する方法は?
SSE プリフェッチ命令のインライン アセンブリを含むコードを使用しています。プリプロセッサ定数は、32 バイト、64 バイト、または 128 バイトのプリフェッチの命令が使用されるかどうかを決定します。このアプリケーションはさまざまなプラットフォームで使用されており、これまでのところ、特定の CPU に最適なオプションをそれぞれのケースで調査する必要がありました。これがキャッシュ ライン サイズであることは理解しています。この情報は自動的に取得されますか? /proc/cpuinfo に明示的に存在していないようです。
java - Hibernate:関連付けられていないエンティティを熱心にフェッチする方法は?
Hibernateを使用したJavaPersistenceは、関連するエンティティを熱心にフェッチする方法の例を数多く示しています。
- @org.hibernate.annotations.BatchSizeを関連するクラスに追加する
- 関連するクラスを参照するフィールドに@org.hibernate.annotations.Fetchを追加します
- HQLクエリなどで「fetch」キーワードを使用する...
ただし、私の場合は、対象のエンティティクラスへの関連付けを構築する責任がある実行速度の遅いプロセスを扱っています。つまり、実行時に、1つのエンティティにクエリを実行して、他のエンティティの関連付けられたすべてのインスタンスを熱心にフェッチするように要求することはできません。そのような関連付けは存在しないためです。
つまり、プロセスは次のようになります。
関連するDAO(NodeManager)と低速クエリのエンティティ(Node)は次のようになります。
そして最後に、実行速度の遅いプロセスによって作成されているエンティティは次のとおりです。
私の質問はこれです:一度にノードの多くのインスタンスを熱心にフェッチするようにHibernateの構成やコードを変更するにはどうすればよいですか?
次の質問は次のようになります。
- Hibernateの第2レベルのキャッシュはこれに適していますか?もしそうなら、どうすれば設定できますか?
- そうでない場合、ここで使用できる他のHibernate機能はありますか?
現在、約100,000のノードがあるので、すべてのノードをクエリしてアプリケーションのどこかにキャッシュするというブルートフォースのアプローチを採用するのは気が進まない。それは、ノードの数を増やすことにはならず、重複するように見えるからだ。アプリケーションとHibernateの内部(セッション、第2レベルのキャッシュなど)の間のデータ。
android - Android:データを読み込んでからアクティビティに通知しますか?失敗したアプローチも文書化されています!
愚かなアプローチを試したところ、アプリがクラッシュしました...基本的に、3つのタブ(3つのアクティビティを含む)を持つアクティビティがあります。各タブは、ネットからダウンロードされたxmlファイルから入力を取得します。すべて問題ありませんが、アプリを起動すると、xmlファイルがダウンロードされ、これには「待機」時間があります。
スプラッシュ画面を追加することで、これを回避することができました。見た目は美しいですが、問題は2番目のタブをクリックすると、リストをネットから削除する必要があるため、見栄えが悪くなります...リストを表示する前に待機します。だから私がしたのは、xmlファイルをダウンロードするだけのAsyncTaskを設計することでした。私の主な活動では、最初に2つのタスクを生成し、URLとインテントをパラメーターとして送信します。そして、タブ内で始まる活動の中で、私はwait()を使用します。AsyncTask内で、ダウンロードが完了した後、notify()を使用してインテントに通知します。これがクラッシュしました!もちろん、私はそれが機能することを期待していませんでしたが、試してみたかっただけです:)これが失敗した理由についてのフィードバックを得るか、他の人がこれに時間を浪費するのを防ぐためにそれを書いてください...
今、私は多くの人がタブ内の「待機」時間の問題に直面していると確信しています。どうすればこれを解決できますか?画面を暗くしてから一連のトーストを表示するか、タブ内に進行状況インジケーターを表示するか、xmlファイルをプリフェッチすることを考えています...これらをどのように実現できるかについての手がかりがありません...任意考え?
javascript - JavaScriptを使用して、自分のサイトで別のWebページをプリフェッチするにはどうすればよいですか?
私はLarge.htmlを持っています。これは、ロードに時間がかかる多くの画像とjavascriptが含まれているWebページです。
他のページ(a.html、b.html)から、JavaScriptを使用してLarge.html(およびページ上のすべての要素)をプリフェッチして、ユーザーのブラウザーにページをキャッシュしてページの読み込みを高速化するにはどうすればよいですか? 。
非表示のIFRAMEを使用する必要がありますか?
linq-to-sql - Linq-to-SQL、IOC、およびリポジトリ パターンを使用したデータのプリフェッチ
Linq-to-SQL を使用して、データをプリフェッチしたいと思います。
1) 一般的な解決策はDataLoadOptionsを処理することですが、私のアーキテクチャでは次の理由で機能しません。
- オプションは最初のクエリの前に設定する必要があります
- IOC を使用しているため、DataContext を直接インスタンス化していません (インスタンス化時にコードを実行することはできません)。
- 私の DataContext は、Web リクエストの間永続的です
2)データとその子をメソッドにロードし、データのみを返すことに基づく別の可能性を見てきました(したがって、子はすでにロードされています)ここで例を参照してください
それにもかかわらず、私のアーキテクチャでは、それは機能しません:
- クエリはリポジトリからカスケードされ、句を追加する多くのサービスで使用できます
- 私はインターフェイスを操作します.linq-to-sqlオブジェクトの具体的なインスタンスはリポジトリを離れません(はい、インターフェイスを操作して句を追加できます)
- 私のリポジトリは一般的です
はい、このアーキテクチャはかなり複雑ですが、レゴのようにコードをいじることができるのでとてもクールです ;)
私の質問は:データをプリフェッチする他の可能性は何ですか?
performance - 最新の CPU キャッシュは、一定のストライドを処理するように最適化されていますか? スレッド間?
大きな配列があり、複数のスレッドが配列から読み取っているとします。各スレッドは、一定量ジャンプすることによって配列を反復しますが、異なるオフセットから開始します。そのため、スレッド 1 は要素 0 から開始し、要素 32、64、96 などを読み取ります。しかし、スレッド 2 は要素 1 から開始し、要素 33、65、97 などを読み取ります (「要素」が通常、最高のキャッシュ パフォーマンスを得るには空間的な局所性が望ましいことは知っていますが、最近の CPU にはアクセスのパターンを探すハードウェア プリフェッチャーがあることも読んだことがあります。明らかなパターン。
- このキャッシュは最新のボックスで使いやすいですか?
- ストライドをキャッシュ ラインよりも大きくするとどうなりますか?
- 答えは複数のスレッドの使用によって影響を受けますか (同じメモリにアクセスしているにもかかわらず、異なるキャッシュを持つ異なるコアで実行されている可能性があります)?