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

ايهما افضل C#.NET Or VB.NET

مغلق
بدأه vBsQ في 20 يناير 2007 · 39 رد · 6,426 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#26

حقيقة حوار شيق و بناء

شخصيا اثارني تحليل الأخ تمام و "دليله" الذي تبناه من أجل ان يقول ان السي شارب اقوى او لنقل اسرع من الفيجوال بيسك دوت نت و قد طرح كود ال MSIL لبرنامج مصمم بالسي شارب و الفيجوال بيسك دوت نت و كما رأينا في مثاله فالبرنامجين لهما نفس العمل رغم ان هناك فرق بين Select Case و ال Switch لكن انا لن اتطرق لهذا الفرق بل سأتطرق للنقطة التي ارتكز عليها حتى خرج بالاستنتاج الذي هو ان السي شارب اسرع من الفيجوال دوت نت و طبعا النقطة التي ارتكز عليها هي حجم الملفين و الفرق بينهما لكن يبدو انه قد غابت عليه ملاحظة بسيطة و مهمة جدا في هذا الأمر أولا لنلاحظ الفرق بين هذين التعبيرين :

   case "1":
						Console.Write("1");
						break;

و الكود المقابل في الفيجوال بيسك دوت نت هو :

Case 1
				Console.Write("1")

هل لاحظتم امرا هنا ؟؟؟ هل لاحظتم الفرق بين الكود الأول بالسي شارب و الكود الثاني بالفيجوال بيسك دوت نت ؟

الفرق بسيط لكنه ادى الى اضافة تعليمة لل MSIL الفرق هو ان في التست في السي شارب الأخ تمام كتب

case "1";

اما في الفيجوال بيسك دوت نت فلم يضف ال ""

case 1

و هذا ادى الى انه تم اضافة هذا السطر في ال MSIL :

IL_000b:  call	   string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToString(int32)

و طبعا كما هو واضح فهذا السطر يقوم بعمل تحويل للرقم 1 من صيغة رقمية الى نص كون ال readLine ترجع لنا String و ليس Int

و ليس هذا فقط بل تم اضافة اشياء أخرى لنرى الفرق :

عند عدم اضافة ال "" الى التست نحصل على :

  IL_0000:  nop
	IL_0001:  nop
	IL_0002:  call	   string [mscorlib]System.Console::ReadLine()
	IL_0007:  stloc.0
	IL_0008:  nop
	IL_0009:  ldloc.0
	IL_000a:  ldc.i4.1
	IL_000b:  call	   string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToString(int32)
	IL_0010:  ldc.i4.0
	IL_0011:  call	   int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Operators::CompareString(string,
																													  string,
																													  bool)

و طبعا هذا الكود هو نفسه عند كل تست

اما عندما نضيف ال "" فالبرنامج لن يحتاج الآن الى عمل Conversion و يكون ال MSIL الناتج هو :

IL_0000:  call	   string [mscorlib]System.Console::ReadLine()
  IL_0005:  stloc.0
  IL_0006:  ldloc.0
  IL_0007:  ldstr	  "1"
  IL_000c:  ldc.i4.0
  IL_000d:  call	   int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Operators::CompareString(string,

اذا لو عدلنا الكود بهذه الطريقة فسنحصل على ملف MSIL أصغر بحجم 1.69 كيلو و هنا اتلكم عن ال MSIL الخاص بالفنكشن Main ثم نأتي لتصغير أكبر بما انك ارتكزت اخي تمام على الحجم

أولا يجب ان نعلم ان كل ال Instruction التي فيها nop هي تعليمات فارغة بمعنى ان المعالج عندما يصل اليها لا يعمل أي شئ هذا اول شئ ثم نأتي لأمر آخر

لنقارن هذين السطرين :

C# MSIL

IL_0010:  call	   bool [mscorlib]System.String::op_Equality(string,string)

VB.NET MSIL

IL_000d:  call	   int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Operators::CompareString(string,
																													string,
																													bool)

نرى طبعا ان الأولى اكول بكثير من الثانية لكن هل هناك فرق ؟؟؟ طبعا لا فالفرق فقط أن في الفيجوال بيسك دوت نت كتب جميع ال NameSpaces يعني ال Hierarchie حتى وصل الى الفنكشن CompareString و لا اظن ان هذا سيؤثر في الأداء كون في الأخير الأمر الذي سيتم تنفيذه هو CompareString

على فكرة انا هنا عملت مقارنة بين ال MSIL لكل من الفنكشن Main الخاصة بالفيجوال دوت نت و الأخرى الخاصة بالسي شارب كوننا هنا نهتم بهما ام الباقي فليس مهما كونه ستتم كتابته حتى لو كان البرنامج فارغ من الأكواد لأنه يجب ان لا تغفل ان الفيجوال بيسك دوت نت به الكلاس MY الذي لا يوجد بالسي شارب و و اذا كان لديك فيجوال بيسك دوت نت 2005 قم بكتابة نفس البرنامج و افتحه ببرنامج ال IL DASM و ستجد انه ضمن حتى الكلاس MY في ال IL لذا ستجد ان ال IL أكبر حجما من السي شارب لذا فالمقارنة اذا اردتها ان تكون عادلة يجب ان تكون بين الأكواد المكتوبة كالكود الذي كتبته في مثالك سابقا

المهم أتمنى ان تكون فكرتي قد اتضحت و أن الحجم قد لا يكون تلك الركيزة التي يمكن ان نلجأ اليها عندما نريد ان نؤكد نقطة نظرنا

و السلام عليكم

#27

كيف تحصلون على اكواد MSIL الخاصة بالبرامج التي تنفذوها ؟؟

شكرا

#28

جميل أخي أيوب اصبح الموضوع الان قابلا للمناقشة بشكل افضل

انا ما اقوله كما ذكرت سابقا هو مجرد فرضية اضافة انا لم اعتبر السرعة السبب الذي يميز لغة عن اخرى

هناك امور في C Sharp كما ذكرت سابقا غير موجودة في VB.NET هي التي تجعلني اقول ان C Sharp تمتاز قليلا عن VB.NET

انت قلت ان السطر الذي اضيف هو التالي :

IL_000b:  call	   string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToString(int32)

هل لاحظت شيئا غريبا

ان فضاء الاسماء Microsoft.VisualBasic هو المستخدم للتحويل بينما في الـ C Sharp نجد ان المكتبة mscorlib

هي التي تستخدم

و انا كما اشرت في رد سابق ان استخدام فضاء الاسماء Microsoft.VisualBasic هو السبب الرئيس الذي يجعل التنفيذ ابطأ

انا شككت بالحجم فليس منطقيا ان يكون حجم ملف MSIL للـ VB.NET مساويا عدة مرات حجم ملف MSIL للـ C Sharp

لذا ذكرت في رد سابق لا اعلم اذا انتبهت إليه انه يوجد تجربتان ما تزالان في بالي للتأكد

احدى التجربتين هي ان اقارن ملف MSIL الناتج عند الترجمة في حالة Release و ليس في حالة Debug لأنني

اشك ان VB.NET قد تكون وضعت المزيد من الكود لتسهيل عملية تنقيح البرنامج

و ان النسخة الناتجة عن Release ستكون اكبر بشيء بسيط من نسخة C Sharp

لكن ما تزال VB.nET تنتج كود اكبر من C Sharp

اذا قلنا ان npoe لا تفعل شيئا و حذفناها هل سينتج نفس الكود

طبعا لا

انت لم تشر في الجزء الذي استشهدت به إلى ان VB.NET تستخدم دوال اضافية مثل ldc.i4.0 و ldc.i4.1

و لا يمكننا ان نقول ان هذه الدوال لا تفعل شيئا مثل nope

بالنسبة لك اخي زيد الرافدين كان هناك درس كتبته في منتدى الدوت نت العام يشرح ذلك الدرس كان على مدونتي القديمة قبل ان يتوقف موقعها

سأجلبه غدا و اضعه لك

تم تعديل هذه المشاركة بواسطة تمام كوجان في 27 يناير 2007 في 22:39

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#29

اجمل ما في موضوع النقاش انه بدأ ياخذ منحنى علمي متبوع بالبراهين والامثلة :lol: بعكس الاطروحات السابقة نريد المزيد ;)

تحياتي

#30
اقتباس
بالنسبة لك اخي زيد الرافدين كان هناك درس كتبته في منتدى الدوت نت العام يشرح ذلك الدرس كان على مدونتي القديمة قبل ان يتوقف موقعها

سأجلبه غدا و اضعه لك

مشكور اخ تمام كوجان

وانا بالانتظار

شكرا

#31
اقتباس
انت قلت ان السطر الذي اضيف هو التالي :

كود

IL_000b: call string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToString(int32)

هل لاحظت شيئا غريبا

ان فضاء الاسماء Microsoft.VisualBasic هو المستخدم للتحويل بينما في الـ C Sharp نجد ان المكتبة mscorlib

هي التي تستخدم

أصلا السطر الذي ذكرته أنا لا يوجد مقابله في كودك في السي شارب كونه اصلا لا يقوم بعملية التحويل من ال Int الى String اما بالنسبة للفرق بين استخدام mscorlib و Microsoft.Visualbasic فحقيقة شخصيا لا ادري هل الأولى أسرع من الثانية ام العكس أم انها متشابهتين لذا اتمنى ان تقوم بطرح دليل يبين ان استعمال mscorlib أسرع من استعمال MS.VB

اقتباس
انا شككت بالحجم فليس منطقيا ان يكون حجم ملف MSIL للـ VB.NET مساويا عدة مرات حجم ملف MSIL للـ C Sharp

لذا ذكرت في رد سابق لا اعلم اذا انتبهت إليه انه يوجد تجربتان ما تزالان في بالي للتأكد

احدى التجربتين هي ان اقارن ملف MSIL الناتج عند الترجمة في حالة Release و ليس في حالة Debug لأنني

اشك ان VB.NET قد تكون وضعت المزيد من الكود لتسهيل عملية تنقيح البرنامج

و ان النسخة الناتجة عن Release ستكون اكبر بشيء بسيط من نسخة C Sharp

لكن ما تزال VB.nET تنتج كود اكبر من C Sharp

كما ذكرت في ردي السابق فالكود الاضافي هو الكود الخاص بالكلاس MY و اليك الدليل :

msil.JPG

اقتباس
انت لم تشر في الجزء الذي استشهدت به إلى ان VB.NET تستخدم دوال اضافية مثل ldc.i4.0 و ldc.i4.1

و لا يمكننا ان نقول ان هذه الدوال لا تفعل شيئا مثل nope

المشكل انه سوف نعود الى أن طبيعة ال Select Case ليس ك Switch فال Select Case اقوى من ال Switch و بها ميزات كثيرا لذا يمكن ان تكون هناك أشياء اضافية و بالنسبة للدوال ldc.i4.0 و ldc.i4.1 فهي تقوم بكل بساطة بوضع ال Constant المتبوع للدالة في هذه الحالة 0 او 1 في ال Stack في المقابل أجد تعليمات في ال MSIL بالسي شارب لا توجد في ال MSIL الخاص بال VB.NET مثل brfalse.s IL_0040

و يمكن من كل هذا استنتاج ان الكودين متشابهين الى حد كبير و لا يمكننا (من خلال هذا المثال) ان نحدد أيهما اسرع او أفضل

تم تعديل هذه المشاركة بواسطة Ayoub JAMAL EL IDRISSI في 28 يناير 2007 في 02:25

#32
اقتباس
أصلا السطر الذي ذكرته أنا لا يوجد مقابله في كودك في السي شارب كونه اصلا لا يقوم بعملية التحويل من ال Int الى String

انت قلتها C Sharp وفرت عملية التحويل من Int إلى String اذا فقد وفرت الوقت اللازم للتحويل

اقتباس
لذا اتمنى ان تقوم بطرح دليل يبين ان استعمال mscorlib أسرع من استعمال MS.VB

حسنا هذا مثال بسيط يبين ذلك كتبت برنامجا بسيطا فيه زران

كتبت في الاول:

		TextBox1.Text = Now.Second
		For i As Integer = 0 To 5000000
			Microsoft.VisualBasic.Conversion.Str(i)
		Next
		TextBox2.Text = Now.Second

و كتبت في الثاني :

		TextBox3.Text = Now.Second
		For i As Integer = 0 To 5000000
			System.Convert.ToString(i)
		Next
		TextBox4.Text = Now.Second

فماذا كانت النتيجة

النتيجة ان System.Convert.ToString اسرع من Microsoft.VisualBasic.Conversion.Str بمرتين تقريبا

طبعا يمكن الحصول على نتائج ادق و بأجزاء الثانية لو احببت المثال في المرفقات

انتم تعلقون على ان اختباري كان بين Switch و Select و انهما مختلفتان مع اني اعتبر ان الاضافات الموجودة في Select هي مشكلة

لأنها اضيفت للمشروع دون ان استفيد منها

و حتى نتأكد اكثر وجدت اليوم الموضوع التالي الذي يقارن بين تعليمتي if بين اللغتين حتى لا تقولوا اني متمسك بـ Switch و Select

و لو قرأتم الموضوع بدقة لوجدتم انه حتى بالنسبة لتعليمة بسيطة كـ IF يوجد اختلاف بسيط

VB vs. C# MSIL Code Generation: Are the results equal?

ملاحظة عندما جربت الحصول على ملف MSIL للملف التنفيذي المترجم في الحالة Release نقص الحجم عدة كيلو بايتات فقط

و بالاتالي كما ذكرت اخي ايوب زيادة الحجم كانت بسبب وجود My بشكل رئيسي و لان النسخة كانت مترجمة في وضع Debug بشكل ثانوي

و بالنسبة لوجود My فما الفائدة منه اذا لم استخدمه

ستقولون انه غير موجود في C Sharp و هو يحمل الكثير من الميزات اقول لكم نعم غير موجود لكن عندما اريد استخدامه يمكنني

استيراد الفضاء Microsoft.VisualBasic اما ان يكون موجودا في مشروع الفيجوال دون ان استفيد منه فما الجدوى

ConvertTest.zip

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#33
اقتباس
انت قلتها C Sharp وفرت عملية التحويل من Int إلى String اذا فقد وفرت الوقت اللازم للتحويل

لا اله الا الله

أخي تمام يبدو انك لم تلاحظ جيدا ما كتبت سابقا في كودك الخاص بالسي شارب كتبت التالي :

case "1":
						Console.Write("1");
						break;

الا ترى شيئا هنا ؟؟ أنت لم تعط ل Case رقما كما فعلت مع الكود في الفيجوال بيسك دوت نت

Case 1
				Console.Write("1")

و لكن مررت له String لذا فلم يقم بالتحويل ليس لأنه اختصر وقت التحويل لكن اصلا لن يحتاج للتحويل على العكس من الكود الخاص بالفيجوال فأنت مررت له Int يعني يجب عليه ان يقوم بالتحويل و اذا ذكرت في مشاركتي السابقة انه اذا مررت له String بهذه الطريقة :

Case "1"
				Console.Write("1")

فلن يقوم بالتحويل و بهذا لن تجد في ال MSIL السطر التالي (و بعض من توابعه) :

IL_000b: call string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToString(int32)

النقطة الأخرى و هي المثال الذي وضعته يجب اولا ان نتفق على شئ و هو ان هذا الكود لا يستعمل أبدا من طريف مبرمجي الفيجوال بيسك دوت نت (على حد علمي ) :

Microsoft.VisualBasic.Conversion.Str(i)

لكن عندما نقوم بعمل تحويل من نوع Int الى String دوما نستعمل الخاصية ToString من أجل ذلك و لهذا قمت بتجربة الأكواد الثلاثة و هما

Using Microsoft.VisualBasic.Conversion.Str

		For i As Integer = 0 To 5000000
			Microsoft.VisualBasic.Conversion.Str(i)
		Next
------------------------------------------------
Using System.Convert.ToString

	  For i As Integer = 0 To 5000000
			System.Convert.ToString(i)
		Next
-----------------------------------------------
Using Int32.ToString

For i As Integer = 0 To 5000000
			i.ToString()
		Next

الكود الأخير هو المستعمل من طرف الجميع و لك أن تسأل مبرمجي الفيجوال

المهم أتعلم ماكانت النتيجة ؟؟؟

استعمال ToString هو نفس الكود باستعمال System.Convert.ToString و هذا الوقت الذي استغرقه البرنامج في كل دالة :

Tst.JPG

قد تقول لي أنك حاولت ان تبرهن ان Microsoft.VisualBasic.Conversion.Str() أقل سرعة من MSCORLIB سأقول لك نعم معك حق لكن في نفس الوقت سأقول لك انك اخطأت في الكود الخاص بالمثال الأول لأنك تجاهلت تغيير نوع المتغير من Int الى String قبل تمريره الى Case و هذا قد يكون خطأ المبرمج و ليس خطا اللغة و هنا سندخل في الأخطاء التي يرتكبها المبرمجون و ليس اللغة بحد ذاتها لأن اللغة تعطي امكانيات لتفادي مثل هذه الأمور

بالنسبة للأمر IF حقيقة ليس لدي الوقت حاليا لقراءة الموضوع لكن أعدك اني سأقرأه و احاول ان افهم ما هو الفرق و هل فعلا اذا كان هناك فرق هل سيؤثر في أداء البرنامج ام لا

اما بالنسبة ل قولك ان ال Select Case تعطيك امكانيات قد لا تحتاجها اصلا فهذا قول مردود عليك كون في كود ال MSIL لا توجد Instructions اضافية لا تقوم بشئ بعمنى انها لا مكان لها و اذا ذكرت LDC.i4 فهي كما ذكرت لا تقوم الا بوضع Constant في ال Stack

اما بالنسبة لل MY فهذه باتفاق الجميع ميزة في الفيجوال بيسك دوت نت لكن هناك أمر سأعطيك مثال لو كتبت 100 دالة في برنامجك و استعملت اثنثين فهل سيكون الأمر كما لو انك استعملت ال 100 كلها ؟؟؟ طبعا لا لذا فال MY موجودة نعم لكن لن يتم تنفيذها الا اذا استدعيناها و ال EXECUTION ستبدأ من ال .entrypoint الموجودة في ال Main

ارجو ان تكون فكرتي وصلت

و السلام عليكم

تم تعديل هذه المشاركة بواسطة Ayoub JAMAL EL IDRISSI في 28 يناير 2007 في 17:12

#34

محمد رسول الله

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

فهذا لم ينفي ان الفكرة الاساسية التي ركزت عليها و هي ان استدعاء الدوال من Microsoft.VisualBasic هو ابطأ عادة من استدعاء الدوال

المقابلة في فضاء الاسماء System

اقتباس
النقطة الأخرى و هي المثال الذي وضعته يجب اولا ان نتفق على شئ و هو ان هذا الكود لا يستعمل أبدا من طريف مبرمجي الفيجوال بيسك دوت نت (على حد علمي )

انا استعملته لاقارن لك في الاداء و لأثبت ان استخدام VB.NET للفضاء Microsoft.VisualBasic في عملية التحويل إلى String يأخذ وقتا

اكثر لانك لم تقتنع بذلك و قلت ان الاداء متساوي

اقتباس
استعمال ToString هو نفس الكود باستعمال System.Convert.ToString و هذا الوقت الذي استغرقه البرنامج في كل دالة :

بصراحة هذه العبارة جعلتني اضحك قليلا

قبل ان اعلق عليها دعنا ننظر إلى صورة البرنامج التي ارفقتها

الصورة تبين ان الوقت الذي تستغرقه الدالة الموجودة في الفضاء Microsoft.VisualBasic تستغرق وقتا اطول

الحمد لله ان النتائج التي ظهرت معك كانت موافقة لنتائج تجربتي

بالنسبة التي ذكرتها انت التي اكتشفتها فيمكنني ان اقول لك انه خطأ مبرمج و ليس خطأ لغة

لماذا

انت قارنت بين

System.Convert.ToString(i)

و بين

i.ToString()

و قلت انهما متساويان

اقتباس
استعمال ToString هو نفس الكود باستعمال System.Convert.ToString

انت هنا تخلط الامور و كأنك تقول ان استخدام .ToString() هو استخدام لدالة من الفضاء Microsoft.VisualBasic

قم معي بالتجربة التالية

اذهب إلى السطر التالي في برنامجك :

i.ToString()

و انقر على الدالة ToString بزر الفأرة الايمن و اختر Go To Defention

عندها سيفتح Object Browser تمعن قليلا و قل لي الا تلاحظ شيئا ما

الدالة ToString و التي استشهدت بأن سرعتها مكافئة لسرعة Convert.ToString هي من فضاء الاسماء System

و ليست من فضاء الاسماء Microsoft.VisualBasic اي انك تقارن دالتين من فضاء واحد و نحن كان كلامنا ان نقارن دالتين من فضائين

مختلفين هما System و Microsoft.VisualBasic

و امر طبيعي ان تساوي سرعة ToString سرعة Convert.ToString و انا

اظن ان Int32.ToString هي تغليف للدالة Convert.ToString

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#35

نعم انا اتفق معك ان Microsoft.VisualBasic.Conversion.Str أبطأ من System.Convert ذلك أن الأولى لا تستفيد من امكانيات الدوت نت و فكأنما نستعمل طريقة التحويل الخاصة بال VB6 و لهذا فالخطأ يكون من المبرمج الذي سيستخدمها كونه سيبرمج بالدوت نت اعتمادا على عقلية الفيجوال 6

اقتباس
إقتباس

استعمال ToString هو نفس الكود باستعمال System.Convert.ToString و هذا الوقت الذي استغرقه البرنامج في كل دالة :

بصراحة هذه العبارة جعلتني اضحك قليلا

حقيقة لا ادري لما ضحكت، لكن المهم من خلال عبارتي اردت أن أبرهن شيئا و هو ان الطريقة التي تستعمل دوما Int32.ToString هي نفسها System.Convert.ToString بمعنى انه الطريقة المثالية و ذلك واضح ايضا في كود ال MSIL للدالتين :

Int32.ToString
IL_0012:  call	   instance string [mscorlib]System.Int32::ToString()
-----------------------------
System.Convert.ToString
IL_0011:  call	   string [mscorlib]System.Convert::ToString(int32)

و كما ذكرت انت فلربما الفنكشن Int32.ToString هي موروثة من الكلاس System.Convert.ToString

اقتباس
انا استعملته لاقارن لك في الاداء و لأثبت ان استخدام VB.NET للفضاء Microsoft.VisualBasic في عملية التحويل إلى String يأخذ وقتا

اكثر لانك لم تقتنع بذلك و قلت ان الاداء متساوي

انا لم اقل ان الأداء متساوي بل قلت اني لا ادري و اردت منك دليلا و ذاك ما عرضته انت و تأكدنا الآن ان الاداء مختلف لكن مع ذلك يبقى الأمر في أن من يستعمل ال Microsoft.VisualBasic.Conversion.Str هو المخطئ لأنه تفادى استعمال ال Int32.ToString

#36
اقتباس
نعم انا اتفق معك ان Microsoft.VisualBasic.Conversion.Str أبطأ من System.Convert ذلك أن الأولى لا تستفيد من امكانيات الدوت نت و فكأنما نستعمل طريقة التحويل الخاصة بال VB6 و لهذا فالخطأ يكون من المبرمج الذي سيستخدمها كونه سيبرمج بالدوت نت اعتمادا على عقلية الفيجوال 6

يا ايوب انا وضعتها من اجل الاختبار و ليس من اجل الاستخدام

انا ضحكت لانك تقارن دالتين من نفس فضاء الاسماء و تثبت لي انهما متساويتتان

رغم ان هذا ليس هدفنا بل ربما كان تشتيتا للهدف الرئيسي

على كل بدأ الموضوع يتجه نحو ناحية لا احبها

لذا ستكون هذه اخر مشاركاتي فيه

بالنسبة لك اخي زيد الرافيدين الموضوع غير متاح بين يدي حاليا بسبب بعض المشاكل على السرفر

لكن تاتكد انك في بالي و سأضعه قريبا

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#37
اقتباس
يا ايوب انا وضعتها من اجل الاختبار و ليس من اجل الاستخدام

i know that but just i said that about the coding and for others to not to use it in theire programs that s all

اقتباس
انا ضحكت لانك تقارن دالتين من نفس فضاء الاسماء و تثبت لي انهما متساويتتان

رغم ان هذا ليس هدفنا بل ربما كان تشتيتا للهدف الرئيسي

yeah i know that just i tried to say that the way that we use frequently is the correct way

اقتباس
على كل بدأ الموضوع يتجه نحو ناحية لا احبها

لذا ستكون هذه اخر مشاركاتي فيه

which way u mean ,, i didn t mean any thing and i don t want that u misundertand me

تم تعديل هذه المشاركة بواسطة Ayoub JAMAL EL IDRISSI في 28 يناير 2007 في 19:56

#38

لا عليك اخي ايوب

هذا الموضوع كان شيقا بالنسبة لي و قد استمتعت بمناقشتك و الاخوة

لان النقاش كان على اساس علمي و اعتمد على ادلة و امثلة و هو ما جعله جميلا

لان معظم المواضيع التي تكون على شاكلة الموضوع في المنتدى تعتمد على قناعات و عصبيات

و تنتهي بمشاكل دون اي فائدة علمية

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

و قد ذكرني بنقاشات رائعة قرأتها بمواضيع قديمة في المنتدى لأعضاء قدامى و كانت هذه المناظرات رائعة من حيث المناقشات و من حيث الفائدة

لكنني توقفت خشية ان يحتدم النقاش و يبدأ الموضوع بالاتجاه نحو اشتعال حرب بين مؤيدي كل لغة

و يبدأ انصار كل لغة بالدخول و المشاركة على اساس تعصبهم للغة التي يحبونها و تبدأ المشاكل الشخصية كما هي العادة

هذا الحوار كان شيقا و اتمنى ان نلتقي في حوار اخر شيق :)

و مرة اخرى اقول اللغتان رائعتان و يجب تعلهما كلتاهما

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#39

أخي العزيز تمام

ان مسألة مقارنة اللغتين مسألة جد معقدة فكل لغة لها مميزاتها و سلبياتها و هذا الحوار قد تابعته عدة مرات في مواقع أجنبية و كل مرة لا ينتهي الى نتيجة أكيدة تؤكد قوة لغة على اخرى

لكن أنا كما انت احببت النقاش كونه ارتكز على امثلة و ليس فقط كلام

و كما قلت حتى لا ينقلب الحوار الى مشادات نتوقف رغم انه لا زالت نفسي راغبة في استمرار هذا النقاش الرائع :)

#40

الحمد لله تمكنت من الحصول على ملف الدرس اخيرا

و وضعته على مدونتي الجديدة :

http://tammamkoujan.wordpress.com/

يمكنك الان اخي زيد الرافدين و بقية الاخوة الاطلاع على كيفية الحصول على ملف MSIL و الدرس اشياء اخرى مفيدة

رابط الدرس :

كيف اكسر حماية برنامج مكتوب بالـ .NET

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

هذا الموضوع مغلق.

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