מדריך LINQ – PLINQ
PLINQ הוא parallel linq (רק מגרסה 4.0 ומעלה) מאפשר לנו בקלות לבצע את שאילתות ה – LINQ בצורה פרללית (כלומר כמה threads שיבצעו את העבודה) אני לא ארחיב בנושא מכיוון שזה נושא בפני עצמו, אני רק אדגים דוגמא קטנה
List<int> list = Enumerable.Range(1, 50000000).ToList(); for (int i = 0; i < 4; i++) { Stopwatch sw = Stopwatch.StartNew(); var count = list.Count(x => IsPrime(x)); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); sw = Stopwatch.StartNew(); count = list.AsParallel().Count(x => IsPrime(x)); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.WriteLine("==========="); } static bool IsPrime(int num) { for (int i = num - 1; i > 1; i++) { if (num % i == 0) return false; } return true; }
בדוגמא הזאת אנחנו מפעילים על כל איבר את הפונקצייה IsPrime (שמוממשת בצורה שייקח לה זמן להתבצע) ואנחנו סוכמים כמה מספרים ראשוניים יש במערך.
הדוגמא הראשונה משתמשת ב – LINQ רגיל לעומת הדוגנא השנייה שמתשמש ב – PLINQ בעזרת קריאה ל – AsParallel.
הקוד הפרללי רץ במיהירות כפולה (אצלי במחשב) מהקוד הרגיל.
סיכום
LINQ הוא כלי מדהים שבעזרתו אפשר לשנות את הרגלי הכתיבה שלנו ולכתוב קוד קריא יותר ומהיר יותר גם מבחינת הביצועים וגם מבחינת מהירות הכתיבה.
פורסם במקור בבלוג של שלמה גולדברג (הרב דוטנט) – מרצה ויועץ במכללת סלע
תגובות בפייסבוק