سؤال

أنا جديدة إلى Microsoft.مسرع.نلقي نظرة على التعليمات البرمجية التالية (فمن F# وإنما هو مماثلة إلى C#):

type FPA = Microsoft.ParallelArrays.FloatParallelArray

let fi = List.init 9 (fun i -> new FPA(i, [|10;10|])) 
let process (fi: FPA list) : FPA list = fi // complicated function
let newfi = process fi
let target = new DX9Target()
for newf in newfi do printfn "%A" (target.toArray2D(newf))

Basicaly يمكنني إنشاء قائمة FPAs ومعالجة ذلك بطريقة أن كل عنصر في الناتج newfi قائمة dependend على جميع العناصر في fi قائمة.واخيرا أود الحصول على الناتج fi قائمة.و سؤالي هو:يجب أن أتصل toArray2D لكل عنصر واحد (FPA) في الناتج FPA القائمة ؟ يبدو لي أن كل حساب يتم تشغيل كل مرة أتصل toArray2D ، والتي تستغرق وقتا طويلا جدا.

شكرا لكم على مساعدتكم.Oldrich

هل كانت مفيدة؟

المحلول

وهو FPA يمثل الحساب إلى أن تتم.لديك اثنين من قوائم هذه الحسابات, fi و newfi.بسبب كم أنت تحديد الأشياء ، كل عنصر من newfi هو الحساب الذي سوف تحتاج إلى أن تدار بشكل مستقل للحصول على القيمة ؛ على الرغم من أنه هو محدد في الشروط الأساسية المشتركة بين عناصر من fi, لا توجد طريقة للاستفادة من هذا الواقع إلا حساب الأساسية fi القيم مرة واحدة وإعادة استخدامها.إذا كنت تريد تلك fi الحسابات التي يتعين القيام بها سوى مرة واحدة, سوف تحتاج إلى القيام بأحد الإجراءات التالية:

  1. الحصول على نتائج fi الحسابات (على سبيل المثالباستخدام toArray2D) ، و بناء newfi قائمة على أساس هذه القيم المحسوبة.
  2. إنشاء حساب واحد الذي يمثل جميع newfi القيم في صفيف واحد - قد تحتاج إلى أن يكون قليلا ذكي أن يؤلف مثل هذا الحساب ، ولكن هذا يمكن أن تسمح لك حساب جميع القيم في آن واحد دون الحاجة إلى حساب fi القيم.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top