الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اختصر البرنامج ليكون أكثر efficiency

بدأه Java programmer will be في 13 سبتمبر 2012 · 2 رد · 941 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أحاول فى هذه الفترة أنا اكتب برامج بسيطة ولكن بطريقة أخرى حتى تكون أكثر efficiency للتخفيف على الذاكرة والمعالج

مثلاً هذا البرنامج البسيط:

import java.util.Scanner; 
   public class Addition   {
 public static void main( String[] args )
 {
Scanner input = new Scanner( System.in );                  

int number1;
int number2;
int sum;

System.out.print( "Enter first integer: " ); 
number1 = input.nextInt(); 

System.out.print( "Enter second integer: " ); 
number2 = input.nextInt(); 

         sum = number1 + number2; 

         System.out.printf( "Sum is %d\n", sum );  
    } 
  }

أحاول أن اختصره ولم اختصر الا:

int number1, number2, sum;

كيف يمكن أن اختصره أكثر؟

وهل هناك قواعد معينه او مساعدات بسيطة تساعدني فى هذا الموضوع؟

فى الادخال مثلا هل يمكن أن اختصر سطرين الادخال بسطر واحد؟

#2

السلام عليكم

حاولت أن أختصر بجعل البرنامج يستخدم متغير واحد فقط , وهذا هو الكود :

import java.util.Scanner; 
   public class Addition   {
 public static void main( String[] args )
 {
Scanner input = new Scanner( System.in );                  

int sum = 0;

System.out.print( "Enter first integer: " ); 

sum += input.nextInt(); 

System.out.print( "Enter second integer: " ); 

 sum += input.nextInt(); 


         System.out.printf( "Sum is %d\n", sum );  
    } 
  }

أما بالنسبة لهذا الإختصار :

int number1, number2, sum;

فهو إختصار أو تسهيل للكتابة فقط , لأنه سوف يظل يحجز ثلاث متغيرات في الذاكرة

ولكن نصيحتي لك يا أخي العزيز أن تهتم أكثر في الأداء أكثر من حجم المتغيرات في الذاكرة . لأن والحمدالله الأحجام الأن في إزديات وﻻ بأس بتسرب بعض المتغيرات :lol:

1

للصداقة البرمجية

pro-vb6@hotmail.com

#3

عندما تتكلم عن الكفاءة فالأمر لا يقتصر على تغيير عدد المتغيرات للتخفيف عن الذاكرة ، هناك نوع من المقايضة عليك ان تقوم به حسب نوع البرنامج، فأنت في العادة تقايض الذاكرة مع سرعة التنفيذ ، اما ان تقوم بتقليل عدد المتغيرات مع تسريع البرنامج في نفس الوقت فهو امر نادر الحدوث.

مثلا لتسريع عمل البرنامج يمكنك استخدام

Bitwise operation لكي تصبح العملية كلها تتم داخل المعالج ولايحتاج المعالج الى عمل referencing للذاكرة، كما يمكنك استخدامها كبديل للجمل الشرطية if وبهذا تكسب عدد من دورات المعالج بالتخلص من الدورات المهدورة في حالة اخطأ الbranch prediction في المعالج.

هناك ايضا مايسمى بــ Precomputed results, Caching فمثلا من الطبيعي ان تقوم بتخزين كل قيمه لعدد من متسلسلة فيبوناتشي بدلا من حسابها كل مره كما في الطريقة الــ recursive والتي تعتبر بطيئة جدا

كما يمكنك ايضا التخلي عن السرعه لمصلحة المساحه

تذكر ايضا ان الكومبيلرات هذه الايام ذكيه اي بالنسبة للكود البسيط الذي كتبته انت بالاعلى يستطيع الــكومبيلر عمل Optimization من دون اخبارك، الاشياء التي لا يفهمها الكومبيلر هي الاشياء المعقده مثل الخوارزميات التي تحتاج الى الكثير من التحليل

لمزيد من المعلومات اقرأ اكثر عن Cache Efficient algorithms, dynamic programming

تحياتي

2

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

مواضيع مشابهة