لمحة جافاوية 4:انسخ مصفوفاتك في نصف الوقت

كومني (أعتذر عن التأخير بالياباني لزوم اليبينة على وزن أمركة)
وأريجتو (بمعنى شكراً لكم برضو باليباني) على متابعتكم لكتاباتي
بصراحة لا أحب هذه الطريقة في الكتابة واستخدام مصطلحات أجنبية من أي لغة كانت
لكن أحاول استخدمها بطريقة فكاهية كمحاولة للنقد
ما الذي أتكلم عنه؟
كالعادة يجب أن أقرأ بداية الموضوع لكي أتذكر
وأنا اليوم أتصفح موقع [url=”http://www.mostasharok.net/”]مستشارك[/url] لفت انتباهي إحدى التدوينات
تتلكم عن ورقة تعليمية white paper من شركة صن تتكلم عن تحسين للجافا [url=”http://java.sun.com/performance/reference/whitepapers/6_performance.html/”]الرابط[/url]
لفت انتباهي دالة في الفئة System اسمها arraycopy تقول الورقة بإنها أصبحت أسرع
بالطبع هذه الدالة أصيلة native أعني مكتوبة بلغة التجميع أو لغة قريبة منها مثل c
قمت بعمل هذا برنامج بسيط لأرى الفرق بين استخدام هذه الدالة وبين طريقة النسخ التقليدية

public class Time {
public static void main(String a[]){
int[] unicode = new int[1000000];
for (int i = 0; i < unicode.length; i++) {
unicode[i] = i;
}
int[] latin1 = new int[1000000];
long i=System.nanoTime();
System.arraycopy(unicode, 0, latin1, 0, 1000000);
long cons1=System.nanoTime()-i;
i=System.nanoTime();
for (int k = 0; k < unicode.length; k++) {
unicode[k] = latin1[k];
}
long cons2=System.nanoTime()-i;
System.out.println("consuming time with System.arraycopy = "+cons1+
"\nconsuming time without System.arraycopy = "+cons2);
}
}


لاحظت أن الفرق يصل إلى الضعف في بعض الأحيان
بالتأكيد النتائج تقريبية لكن مع زيادة حجم المصفوفة وتعقيد الكائنات يظهر ذلك بوضوح
بالطبع هذه المعلومة ستلزم من يقوم ببرمجة الملتميديا بشكل عام أو الألعاب بشكل خاص لتسريع برامجهم
أترككم في رعاية الله
المراجع:
1- مقالة بعنوان System.arraycopy
[url=”http://www.cafeaulait.org/course/week2/50.html/”]http://www.cafeaulait.org/course/week2/50.html[/url]
2- معنى كلمة white paper من موقع ويكابيديا
[url=”http://en.wikipedia.org/wiki/White_paper”]http://en.wikipedia.org/wiki/White_paper[/url]

Leave a Reply