'ভার' ব্যবহার করা পারফরম্যান্সকে প্রভাবিত করবে?


230

এর আগে আমি একটি প্রশ্ন জিজ্ঞাসা করেছিলাম কেন আমি এতগুলি উদাহরণ varকীওয়ার্ডটি ব্যবহার করি এবং এর উত্তর পেয়েছি যে এটি কেবল বেনাম প্রকারের জন্য প্রয়োজনীয়, যদিও এটি লিখিত কোডটি 'দ্রুত' / সহজ এবং "ঠিক কারণ" করার জন্য ব্যবহৃত হয়।

এই লিঙ্কটি অনুসরণ করে ("সি # 3.0 - ভার ইজ অবজেক") আমি দেখেছি যে varআইএল-তে সঠিক টাইপ করে সংকলিত হয়ে যায় (আপনি মাঝখানে ডাউন নিবন্ধটি সম্পর্কে এটি দেখতে পাবেন)।

আমার প্রশ্নটি varকীওয়ার্ডটি ব্যবহার করে আইএল কোডটি আরও কত, যদি কোনও হয়, এবং কোথাও যদি এটি ব্যবহার করা হয় তবে কোডটির কার্য সম্পাদনকে একটি পরিমাপযোগ্য স্তর রাখার কাছাকাছি থাকতে পারে?


1
প্রশ্নগুলি যুগে যুগে উত্তর দিয়েছিল, কেবলমাত্র ভেরির বিপরীতে আরও একটি বিষয় যুক্ত করতে চেয়েছিল - সংকলনের সময়ে সমাধান হওয়ার পরেও এটি ভিজ্যুয়াল স্টুডিওর "সমস্ত রেফারেন্সগুলি অনুসন্ধান করুন" এবং রেসার্পারের "ব্যবহারগুলি অনুসন্ধান করুন" দ্বারা টাইপ করা না থাকলে এই ধরণের সমস্ত ব্যবহার সন্ধান করতে চাইলে - এবং এটি স্থির করা যাচ্ছে না কারণ এটি খুব ধীর হবে।
কোলএ

@ কলএ ভেরিয়েবলগুলি varভিজ্যুয়াল স্টুডিও 2019 সালে "সমস্ত রেফারেন্সগুলি সন্ধান করুন" এর সাথে সুনির্দিষ্টভাবে কাজ করার সাথে ঘোষণা করেছে , তাই যদি এটি কখনও ভেঙে যায় তবে এটি স্থির করা হয়েছে। তবে আমি নিশ্চিত করতে পারি যে এটি ভিজ্যুয়াল স্টুডিও ২০১২ সালের মতো কাজ করে, তাই আপনি কেন দাবি করলেন যে এটি কাজ করে নি।
হিরোহতার

@ হিরোত্তার "ক্লাস এক্স {} এক্স গেটএক্স () {নতুন এক্স () ফেরান; oid শূন্য ইউজএক্স () {বার এক্স = গেটএক্স ();}" এবং এক্স এর সমস্ত রেফারেন্স সন্ধান করুন, "ওয়ার এক্স = গেটএক্স ( ) "বিটটি হাইলাইট করা হয়নি - সাম্প্রতিকতম VS2019 এ, আমি এর অর্থ বোঝাতে চাইছি। এটি হাইলাইট করা হয়েছে যদিও আপনি var এর পরিবর্তে "X x = getX ()" ব্যবহার করেন
KolA

1
@ কোলাহ আহ, আমি আপনার অর্থ কি তা দেখতে পেয়েছি - varআপনি Xযখন "সমস্ত রেফারেন্সগুলি সন্ধান করুন" ব্যবহার করবেন তখন তার রেফারেন্স হিসাবে বিবেচিত হবে না X। মজার ব্যাপার হচ্ছে, যদি আপনি ব্যবহার "সমস্ত তথ্যসূত্র খুঁজুন" varযে বিবৃতি, এটা হবে আপনাকে রেফারেন্স দেন X(যদিও এটি এখনও তালিকাভুক্ত করা হবে না varবিবৃতি)। অতিরিক্তভাবে, যখন কার্সার চালু থাকে var, তখন এটি Xএকই দস্তাবেজের সমস্ত উদাহরণ হাইলাইট করবে (এবং বিপরীতে)।
হিরোহতার

উত্তর:


316

মূলশব্দটির জন্য কোনও অতিরিক্ত আইএল কোড নেই var: ফলস্বরূপ আইএল অ-বেনামহীন ধরণের জন্য অভিন্ন হওয়া উচিত। যদি সংকলক সেই আইএল তৈরি করতে না পারে কারণ আপনি কী ধরণের ব্যবহার করতে চান তা এটি নির্ধারণ করতে পারে না, তবে আপনি একটি সংকলক ত্রুটি পাবেন।

কেবল কৌশলটি হ'ল varএকটি সঠিক প্রকারটি নির্ধারণ করে যেখানে আপনি কোনও ইন্টারফেস বা পিতামাতার ধরণটি বেছে নিতে পারেন যদি আপনি নিজে নিজে টাইপটি সেট করতে চান।


8 বছর পরে আপডেট করুন

আমার বোধগম্যতা পরিবর্তিত হওয়ায় আমাকে এটি আপডেট করতে হবে। আমি এখন বিশ্বাস করি যে varপদ্ধতিটি কোনও ইন্টারফেসটি ফিরিয়ে দেয় এমন পরিস্থিতিতে পারফরম্যান্সকে প্রভাবিত করা সম্ভব হতে পারে , তবে আপনি সঠিক ধরনের ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনার যদি এই পদ্ধতিটি থাকে:

IList<int> Foo()
{
    return Enumerable.Range(0,10).ToList();
}

পদ্ধতিটি কল করতে কোডের এই তিনটি লাইন বিবেচনা করুন:

List<int> bar1 = Foo();
IList<int> bar = Foo();
var bar3 = Foo();

তিনটিই সংকলন এবং প্রত্যাশিত হিসাবে কার্যকর। তবে, প্রথম দুটি লাইন হুবহু এক নয় এবং তৃতীয় লাইনটি প্রথমটির চেয়ে দ্বিতীয়টির সাথে মিলবে। কারন স্বাক্ষরটি Foo()একটি ফেরত দেওয়া হয় IList<int>, সংকলকটি এভাবে bar3চলকটি তৈরি করবে ।

পারফরম্যান্সের দিক থেকে, বেশিরভাগই আপনি লক্ষ্য করবেন না notice তবে, এমন পরিস্থিতি রয়েছে যেখানে তৃতীয় লাইনের পারফরম্যান্স প্রথমটির পারফরম্যান্সের মতো তত দ্রুত নাও হতে পারে । আপনি যেমন bar3ভেরিয়েবল ব্যবহার চালিয়ে যাচ্ছেন , সংকলক একই পদ্ধতিতে কল কল প্রেরণ করতে সক্ষম নাও হতে পারে।

মনে রাখবেন যে এটি সম্ভব (সম্ভবত এমনকি) এই জটটি এই পার্থক্যটি মুছে ফেলতে সক্ষম হবে, তবে এটির নিশ্চয়তা নেই। সাধারণত, আপনার এখনও varপারফরম্যান্সের ক্ষেত্রে অ-ফ্যাক্টর হিসাবে বিবেচনা করা উচিত । এটি অবশ্যই কোনও dynamicভেরিয়েবল ব্যবহারের মতো নয় । তবে এটি কখনই কোনও তাত্পর্য বোধ করে না বললে এটি অত্যুক্তি হতে পারে।


23
শুধু আইএল অভিন্ন হবে - এটা হল অভিন্ন। var i = 42; ঠিক i = 42 হিসাবে একই কোডে সংকলন করে;
ব্রায়ান রাসমুসেন

15
@ ব্রায়ানআরসমুসেন: আমি জানি আপনার পোস্টটি পুরানো, তবে আমি ধরে নিলাম var i = 42;(ইনফার টাইপ ইন্ট্রি হয়) এর মতো নয় long i = 42;। সুতরাং কিছু ক্ষেত্রে আপনি অনুমান টাইপ সম্পর্কে ভুল ধারণা তৈরি করতে পারেন। মানটি ফিট না হলে এটি অধরা / প্রান্তের ক্ষেত্রে রানটাইম ত্রুটির কারণ হতে পারে। যে কারণে, যখন মানটির একটি সুস্পষ্ট প্রকার না থাকে তবে তা স্পষ্ট করে ফেলা ভাল ধারণা হতে পারে। সুতরাং উদাহরণস্বরূপ, var x = new List<List<Dictionary<int, string>()>()>()গ্রহণযোগ্য হবে, তবে var x = 42কিছুটা অস্পষ্ট এবং এটি হিসাবে লেখা উচিত int x = 42। তবে প্রত্যেকের নিজের কাছে ...
নেলসন রডর্মেল

50
@ নেলসনরোডার্মেল: দ্ব্যর্থক var x = 42; নয় । পূর্ণসংখ্যা আক্ষরিক ধরণের হয় int। আপনি যদি আক্ষরিক দীর্ঘ চান আপনি লিখুন var x = 42L;
ব্রায়ান রাসমুসেন

6
আহম আই সি এর জন্য কী দাঁড়াবে? আমি সত্যিই এটি সম্পর্কে শুনিনি।
বিশুদ্ধটিপিসি

15
কোডের 3 টি লাইনের উদাহরণে যা আলাদাভাবে আচরণ করে প্রথম লাইনটি সংকলন করে না । দ্বিতীয় ও তৃতীয় লাইন, যা উভয় কি কম্পাইল, ঠিক একই জিনিস করে। যদি Fooএকটি Listপরিবর্তে একটি , ফিরে আসে IListতবে তিনটি লাইনই সংকলন করবে তবে তৃতীয় লাইনটি প্রথম লাইনের মতো আচরণ করবে , দ্বিতীয়টি নয়।
পরিবেশন করুন

72

জোয়েল যেমন বলেছে, সংকলকটি টাইপটি কী ধরনের হওয়া উচিত তা সংকলন সময়ে কার্যকর হয়, কার্যকরভাবে এটি কেবল কৌশল যা কীস্ট্রোকগুলি সংরক্ষণ করতে সঞ্চালন করে, তাই উদাহরণস্বরূপ

var s = "hi";

দ্বারা প্রতিস্থাপিত হয়

string s = "hi";

কোনও আইএল উত্পন্ন হওয়ার আগে সংকলক দ্বারা । জেনারেটেড আইএল হুবহু একই রকম হবে যদি আপনি স্ট্রিং টাইপ করেন।


26

যেমন কেউ এখনও প্রতিফলকের কথা উল্লেখ করেনি ...

আপনি যদি নিম্নলিখিত সি # কোডটি সংকলন করেন:

static void Main(string[] args)
{
    var x = "hello";
    string y = "hello again!";
    Console.WriteLine(x);
    Console.WriteLine(y);
}

তারপরে এটিতে প্রতিবিম্বটি ব্যবহার করুন, আপনি পাবেন:

// Methods
private static void Main(string[] args)
{
    string x = "hello";
    string y = "hello again!";
    Console.WriteLine(x);
    Console.WriteLine(y);
}

সুতরাং উত্তর স্পষ্টভাবে কোন রানটাইম পারফরম্যান্স হিট!


17

নিম্নলিখিত পদ্ধতির জন্য:

   private static void StringVsVarILOutput()
    {
        var string1 = new String(new char[9]);

        string string2 = new String(new char[9]);
    }

আইএল আউটপুটটি হ'ল:

        {
          .method private hidebysig static void  StringVsVarILOutput() cil managed
          // Code size       28 (0x1c)
          .maxstack  2
          .locals init ([0] string string1,
                   [1] string string2)
          IL_0000:  nop
          IL_0001:  ldc.i4.s   9
          IL_0003:  newarr     [mscorlib]System.Char
          IL_0008:  newobj     instance void [mscorlib]System.String::.ctor(char[])
          IL_000d:  stloc.0
          IL_000e:  ldc.i4.s   9
          IL_0010:  newarr     [mscorlib]System.Char
          IL_0015:  newobj     instance void [mscorlib]System.String::.ctor(char[])
          IL_001a:  stloc.1
          IL_001b:  ret
        } // end of method Program::StringVsVarILOutput

14

সি # সংকলক varসংকলন সময়ে ভেরিয়েবলের প্রকৃত ধরণের অনুমান করে । উত্পাদিত আইএলে কোনও পার্থক্য নেই।


14

সুতরাং, পরিষ্কার করার জন্য, এটি একটি অলস কোডিং শৈলী। পছন্দ অনুসারে আমি দেশীয় প্রকারগুলি পছন্দ করি; আমি কোড / ডিবাগ সময়ে আমার মনে হয় ঠিক কী লিখছি এবং পড়ছি তা নিশ্চিত করতে আমি অতিরিক্ত "শব্দ" নেব। * শ্রাগ *


1
পারফরম্যান্স সম্পর্কে প্রশ্নের উত্তর নয় কেবল আপনার বিষয়গত দৃষ্টিভঙ্গি। সঠিক উত্তরটি এটির পারফরম্যান্সে কোনও প্রভাব ফেলেনি। আমি নিকটে ভোট দিয়েছি
অ্যান্ডার্স

এটি varকার্য সম্পাদনকে আদৌ প্রভাবিত করে কিনা এই প্রশ্নের উত্তর দেয় না ; লোকেরা এটি ব্যবহার করা উচিত কিনা সে সম্পর্কে আপনি আপনার মতামতটি কেবল বলছেন।
হেরোহতার

পরে মান থেকে প্রকারের সূচনা করা, উদাহরণস্বরূপ, int 5 থেকে ভাসমান 5.25 এ স্যুইচ করা পুরোপুরি কর্মক্ষমতা সমস্যার কারণ হতে পারে। *
শ্রাগ

না, এটি কোনও কার্য সম্পাদনের সমস্যা সৃষ্টি করবে না; আপনি যে কোনও স্থানে ত্রুটির ধরণের প্রত্যাশা করে এমন কোনও স্থানে বিল্ড ত্রুটি পাবেন intকারণ এটি স্বয়ংক্রিয়ভাবে রূপান্তর করতে পারে না float, তবে ঠিক এটিই ঘটবে যদি আপনি স্পষ্টভাবে ব্যবহার করেন intএবং তারপরে পরিবর্তিত হয়ে থাকেন float। যাই হোক না কেন, আপনার উত্তর এখনও " varপারফরম্যান্স ব্যবহার করে ?" এই প্রশ্নের উত্তর দেয় না ? (বিশেষত উত্পন্ন আইএল এর শর্তাবলী)
হেরোহটার

8

আমি মনে করি না আপনি যা পড়েছেন তা সঠিকভাবে বুঝতে পেরেছেন। এটি সঠিক টাইপ কম্পাইল পরার, তাহলে সেখানে হয় কোন পার্থক্য। আমি যখন এটি করি:

var i = 42;

সংকলক জানে এটি কোনও , এবং কোড তৈরি করে যেন আমি লিখেছিলাম

int i = 42;

আপনি যে পোস্টটির সাথে লিঙ্ক করেছেন, এটি একই ধরণের সংকলিত হয়। এটি কোনও রানটাইম চেক বা অন্য কোনও অতিরিক্ত কোডের প্রয়োজন নেই। সংকলকটি কেবল প্রকারটি কী হবে তা নির্ধারণ করে এবং এটি ব্যবহার করে।


ঠিক আছে, তবে পরে যদি আপনি i = i - কিছু ভার এবং কিছু ভার = 3.3। আমি এখন ইন্ট কমপ্লায়ারকে কেবল ত্রুটিগুলি খুঁজে বের করার ক্ষেত্রে সূচনা দেওয়া নয়, রানটাইম ত্রুটিগুলি বা প্রক্রিয়া-ধীরগতির ধরণের রূপান্তরগুলি হ্রাস করতেও এটি স্পষ্ট করে বলা ভাল। * শ্রাগ * এটি স্ব-বর্ণনার জন্য কোডটিকে আরও উন্নত করে। আমি এটি দীর্ঘ, দীর্ঘ সময় করে আসছি। আমি প্রত্যেকবার পছন্দ অনুযায়ী ধরণের স্পষ্ট ধরণের সাথে "গোলমাল" কোডটি নেব।
ক্রিসএইচ 19

5

ভের ব্যবহার করার জন্য কোনও রানটাইম পারফরম্যান্স ব্যয় নেই। যদিও, আমি সন্দেহ করি যে এখানে একটি সংকলন পারফরম্যান্স ব্যয় হবে কারণ সংকলকটির ধরণটি নির্ধারণ করা দরকার, যদিও এটি সম্ভবত তুচ্ছ-তুচ্ছ হবে।


10
আরএইচএসের যেকোন উপায়ে তার ধরণের গণনা করতে হবে - সংকলকটি মেলানো নয় এমন ধরণের ধরণ ধরবে এবং একটি ত্রুটি ছুঁড়ে ফেলবে, তাই সত্যিই সেখানে ব্যয় হবে না I
জিমি

3

সংকলক যদি স্বয়ংক্রিয় প্রকারের ইনফারেন্সিং করতে পারে তবে পারফরম্যান্স নিয়ে কোনও সমস্যা হবে না। এই উভয়ই একই কোড উত্পন্ন করবে

var    x = new ClassA();
ClassA x = new ClassA();

তবে, যদি আপনি গতিশীলভাবে (লাইনকিউ ...) টাইপটি তৈরি করে থাকেন তবে varআপনার একমাত্র প্রশ্ন এবং জরিমানাটি কী তা বলার জন্য তুলনা করার জন্য অন্য পদ্ধতি রয়েছে।


3

আমি সর্বদা ওয়েব শব্দ বা গাইড লেখায় ভের শব্দটি ব্যবহার করি।

অনলাইন নিবন্ধের পাঠ্য সম্পাদকের প্রস্থ ছোট।

আমি যদি এটি লিখি:

SomeCoolNameSpace.SomeCoolClassName.SomeCoolSubClassName coolClass = new SomeCoolNameSpace.SomeCoolClassName.SomeCoolSubClassName();

আপনি দেখতে পাবেন যে উপরে রেন্ডার করা প্রি কোড কোড পাঠ্যটি অনেক দীর্ঘ এবং বাক্সের বাইরে প্রবাহিত হয়ে লুকিয়ে যায়। সম্পূর্ণ সিনট্যাক্সটি দেখতে পাঠকের ডানদিকে স্ক্রোল করা প্রয়োজন।

এজন্য আমি সর্বদা ওয়েব নিবন্ধের লেখায় মূল শব্দটি ব্যবহার করি।

var coolClass = new SomeCoolNameSpace.SomeCoolClassName.SomeCoolSubClassName();

পুরো রেন্ডার করা প্রি কোডটি কেবল পর্দার মধ্যে ফিট করে।

অনুশীলনে, অবজেক্টটি ঘোষণার জন্য, আমি খুব কমই ভার ব্যবহার করি, আমি অবজেক্টটিকে দ্রুত ঘোষণার জন্য ইন্টেলিজেন্সের উপর নির্ভর করি।

উদাহরণ:

SomeCoolNamespace.SomeCoolObject coolObject = new SomeCoolNamespace.SomeCoolObject();

তবে, কোনও পদ্ধতি থেকে অবজেক্ট ফেরত দেওয়ার জন্য, আমি কোডটি দ্রুত লিখতে ভেরি ব্যবহার করি।

উদাহরণ:

var coolObject = GetCoolObject(param1, param2);

যদি আপনি শিক্ষার্থীদের জন্য লেখেন, তবে আপনার নিজের কুকুরের খাবার খান এবং সর্বদা এটি একই "সঠিক" উপায়ে লিখুন ly শিক্ষার্থীরা প্রায়শই 100% শব্দ এবং হৃদয় থেকে জিনিস গ্রহণ করে এবং তারা পথে যে কোনও ঝুঁকিপূর্ণ অভ্যাস ব্যবহার শুরু করে। $ .02
ক্রিসএইচ

1

"ভার" হ'ল সেই জিনিসগুলির মধ্যে একটি যা লোকেরা পছন্দ করে বা ঘৃণা করে (অঞ্চলগুলির মতো)। যদিও অঞ্চলগুলির বিপরীতে, বেনামে বর্গ তৈরি করার সময় ভের একেবারে প্রয়োজনীয়।

আমার কাছে, আপনি যখন সরাসরি কোনও অবজেক্টকে নতুন করে আনছেন তখন ভেরটি বোঝায়:

var dict = new Dictionary<string, string>();

বলা হচ্ছে, আপনি সহজেই কেবল এটি করতে পারেন:

Dictionary<string, string> dict = নতুন এবং ইন্টেলিজেন্স এখানে আপনার জন্য বাকি পূরণ করবে।

আপনি যদি কেবলমাত্র একটি নির্দিষ্ট ইন্টারফেসের সাথে কাজ করতে চান তবে আপনি যে পদ্ধতিটি কল করছেন সেই পদ্ধতিটি ইন্টারফেসটি সরাসরি না ফিরিয়ে আপনি যদি ব্যবহার করতে পারবেন না।

পুনঃভাগটি পুরোপুরি "var" ব্যবহারের পক্ষে রয়েছে বলে মনে হচ্ছে এটি আরও বেশি লোককে সেভাবে করতে চাপ দিতে পারে। তবে আমি একমত যে আপনি যদি কোনও পদ্ধতি কল করছেন এবং এটি নাম দিয়ে কী ফিরিয়ে দেওয়া হচ্ছে তা পরিষ্কার নয় তবে এটি পড়া শক্ত hard

ভার নিজেই কোনও জিনিসকে ধীরে ধীরে কমায় না, তবে এর মধ্যে একটি সতর্কতা রয়েছে যা অনেক লোকই ভাবেন না। আপনি যদি তা করেন var result = SomeMethod();তবে তার পরে কোডটি কোনও ধরণের ফলাফলের প্রত্যাশা করে যেখানে আপনি বিভিন্ন পদ্ধতি বা বৈশিষ্ট্য বা যেকোনো কিছু কল করতে চান। যদি SomeMethod()এর সংজ্ঞাটি অন্য কোনও প্রকারে পরিবর্তিত করা হয় তবে এটি অন্য কোডটি প্রত্যাশিত চুক্তির সাথে মিলিত হয় তবে আপনি সবেমাত্র একটি বাজে বাগ তৈরি করেছেন (অবশ্যই ইউনিট / ইন্টিগ্রেশন পরীক্ষা না থাকলে অবশ্যই)।


0

এটি পরিস্থিতি নির্ভর করে, আপনি যদি এই কোডটি বজায় রাখার চেষ্টা করেন।

এক্সপ্রেশনটি "OBJECT" এ রূপান্তরিত হয় এবং এতটা পারফরম্যান্স হ্রাস পায় তবে এটি একটি বিচ্ছিন্ন সমস্যা।

কোড:

public class Fruta
{
    dynamic _instance;

    public Fruta(dynamic obj)
    {
        _instance = obj;
    }

    public dynamic GetInstance()
    {
        return _instance;
    }
}

public class Manga
{
    public int MyProperty { get; set; }
    public int MyProperty1 { get; set; }
    public int MyProperty2 { get; set; }
    public int MyProperty3 { get; set; }
}

public class Pera
{
    public int MyProperty { get; set; }
    public int MyProperty1 { get; set; }
    public int MyProperty2 { get; set; }
}

public class Executa
{
    public string Exec(int count, int value)
    {
        int x = 0;
        Random random = new Random();
        Stopwatch time = new Stopwatch();
        time.Start();

        while (x < count)
        {
            if (value == 0)
            {
                var obj = new Pera();
            }
            else if (value == 1)
            {
                Pera obj = new Pera();
            }
            else if (value == 2)
            {
                var obj = new Banana();
            }
            else if (value == 3)
            {
                var obj = (0 == random.Next(0, 1) ? new Fruta(new Manga()).GetInstance() : new Fruta(new Pera()).GetInstance());
            }
            else
            {
                Banana obj = new Banana();
            }

            x++;
        }

        time.Stop();
        return time.Elapsed.ToString();
    }

    public void ExecManga()
    {
        var obj = new Fruta(new Manga()).GetInstance();
        Manga obj2 = obj;
    }

    public void ExecPera()
    {
        var obj = new Fruta(new Pera()).GetInstance();
        Pera obj2 = obj;
    }
}

ILSPY সহ উপরের ফলাফল।

public string Exec(int count, int value)
{
    int x = 0;
    Random random = new Random();
    Stopwatch time = new Stopwatch();
    time.Start();

    for (; x < count; x++)
    {
        switch (value)
        {
            case 0:
                {
                    Pera obj5 = new Pera();
                    break;
                }
            case 1:
                {
                    Pera obj4 = new Pera();
                    break;
                }
            case 2:
                {
                    Banana obj3 = default(Banana);
                    break;
                }
            case 3:
                {
                    object obj2 = (random.Next(0, 1) == 0) ? new Fruta(new Manga()).GetInstance() : new Fruta(new Pera()).GetInstance();
                    break;
                }
            default:
                {
                    Banana obj = default(Banana);
                    break;
                }
        }
    }
time.Stop();
return time.Elapsed.ToString();
}

আপনি যদি এই কোডটি কার্যকর করতে চান তবে কোডটি বেলো ব্যবহার করুন এবং সময়ের পার্থক্য পান।

        static void Main(string[] args)
    {
        Executa exec = new Executa();            
        int x = 0;
        int times = 4;
        int count = 100000000;
        int[] intanceType = new int[4] { 0, 1, 2, 3 };

        while(x < times)
        {                
            Parallel.For(0, intanceType.Length, (i) => {
                Console.WriteLine($"Tentativa:{x} Tipo de Instancia: {intanceType[i]} Tempo Execução: {exec.Exec(count, intanceType[i])}");
            });
            x++;
        }

        Console.ReadLine();
    }

শুভেচ্ছা সহ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.