প্রথমত, (আইএমও) পাইথনের সাথে তুলনা করা প্রায় অর্থহীন। কেবলমাত্র উদ্দেশ্য-সি এর সাথে তুলনা অর্থপূর্ণ।
- কিভাবে একটি নতুন প্রোগ্রামিং ভাষা এত দ্রুত হতে পারে?
উদ্দেশ্য-সি একটি ধীর ভাষা। (কেবলমাত্র সি অংশটি দ্রুত, তবে এটি সি এর কারণ) এটি কখনও খুব দ্রুত হয় নি। এটি তাদের (অ্যাপলের) উদ্দেশ্যে যথেষ্ট দ্রুত ছিল এবং তারপরে তাদের পুরানো সংস্করণগুলিও দ্রুত ছিল। এবং এটি ধীর ছিল কারণ ...
- অবজেক্টিভ সি এর খারাপ সংকলক থেকে ফলাফল আছে বা সুইফটের চেয়ে ওজেক্টিভ-সি তে কার্যকর কিছু আছে?
উদ্দেশ্যমূলক-সি প্রতিটি পদ্ধতিকে গতিশীলভাবে প্রেরণের গ্যারান্টিযুক্ত। মোটেও কোনও স্থির প্রেরণ নয়। এর ফলে কোনও উদ্দেশ্য-সি প্রোগ্রামকে আরও অনুকূলিত করা অসম্ভব হয়ে পড়ে। ঠিক আছে, সম্ভবত জেআইটি প্রযুক্তি কিছুটা সহায়তা হতে পারে তবে আফিক, অ্যাপল সত্যই অনির্বচনীয় পারফরম্যান্স বৈশিষ্ট্য এবং জীবনকাল অবজেক্টকে ঘৃণা করে। আমি মনে করি না তারা কোনও জেআইটি স্টাফ গ্রহণ করেছিল। আপনি উদ্দেশ্য-সি সামঞ্জস্যের জন্য কিছু বিশেষ গুণাবলী না রেখে সুইফ্টের এ জাতীয় গতিশীল প্রেরণের গ্যারান্টি নেই।
- আপনি 40% কার্যকারিতা বৃদ্ধি কীভাবে ব্যাখ্যা করবেন? আমি বুঝতে পারি যে আবর্জনা সংগ্রহ / স্বয়ংক্রিয় রেফারেন্স কন্ট্রোল কিছু অতিরিক্ত ওভারহেড উত্পাদন করতে পারে তবে এটি কি এত?
জিসি বা আরসি এখানে কিছু যায় আসে না। সুইফট প্রাথমিকভাবে আরসি নিয়োগ করছে। কোনও জিসি নেই, এবং জিসি প্রযুক্তির উপর বিশাল বিশাল আর্কিটেকচারাল লিপ না থাকলেও তা করবে না। (আইএমও, এটি চিরদিনের জন্য) আমি বিশ্বাস করি স্থিতিশীল অপ্টিমাইজেশনের জন্য সুইফটের আরও অনেক বেশি জায়গা রয়েছে। বিশেষত নিম্ন স্তরের এনক্রিপশন অ্যালগরিদমগুলি, যেহেতু তারা সাধারণত বিশাল সংখ্যার গণনার উপর নির্ভর করে এবং এটি স্ট্যাটিকালি ভাষা প্রেরণের জন্য একটি বিশাল জয়।
আসলে আমি অবাক হয়েছি কারণ 40% খুব ছোট বলে মনে হচ্ছে। আমি আরও অনেক আশা ছিল। যাইহোক, এটি প্রাথমিক প্রকাশ এবং আমার ধারণা অপ্টিমাইজেশন প্রাথমিক উদ্বেগ ছিল না। সুইফট এমনকি বৈশিষ্ট্য-সম্পূর্ণ নয়! তারা এটি আরও ভাল করবে।
হালনাগাদ
কেউ কেউ আমাকে তর্ক করতে থাকে যে জিসি প্রযুক্তি উচ্চতর। যদিও নীচের জিনিসগুলি তর্কযোগ্য হতে পারে, এবং কেবল আমার অত্যন্ত পক্ষপাতমূলক মতামত, তবে আমি মনে করি এই অপ্রয়োজনীয় যুক্তি এড়াতে আমাকে বলতে হবে।
আমি জানি রক্ষণশীল / ট্রেসিং / জেনারাল / ইনক্রিমেন্টাল / প্যারালাল / রিয়েলটাইম জিসিগুলি কীভাবে এবং সেগুলি কীভাবে আলাদা। আমি মনে করি বেশিরভাগ পাঠক এটি ইতিমধ্যে জানেন। আমি আরও একমত যে জিসি কিছু ক্ষেত্রে অত্যন্ত দুর্দান্ত, এবং কিছু ক্ষেত্রে উচ্চ থ্রুপুটও দেখায়।
যাইহোক, আমি সন্দেহ করি যে জিসি থ্রুপুট দাবিটি আরসির চেয়ে সর্বদা ভাল। আরসির বেশিরভাগ ওভারহেড রেফ-কাউন্টিং অপারেশন এবং রেফ-কাউন্ট নম্বর ভেরিয়েবলকে সুরক্ষিত করতে লক করা থেকে আসে। এবং আরসি বাস্তবায়ন গণনা কার্যক্রম পরিচালনা এড়ানোর জন্য একটি উপায় সরবরাহ করে। উদ্দেশ্য সি ইন, আছে __unsafe_unretained
এবং সুইফট এ, (যদিও এটি এখনও কিছুটা অস্পষ্ট আমাকে থাকবে) unowned
সামগ্রী। যদি রেফ-কাউন্টিং অপারেশন ব্যয়টি গ্রহণযোগ্য না হয় তবে আপনি যান্ত্রিকগুলি ব্যবহার করে তাদের নির্বাচন করে বেছে নেওয়ার চেষ্টা করতে পারেন। তাত্ত্বিকভাবে, আমরা আরসি ওভারহেড এড়াতে খুব আক্রমণাত্মকভাবে অ-রক্ষণাবেক্ষণের রেফারেন্সগুলি ব্যবহার করে প্রায় অনন্য-মালিকানা পরিস্থিতি অনুকরণ করতে পারি। এছাড়াও আমি আশা করি যে সংকলকটি কিছু সুস্পষ্ট অপ্রয়োজনীয় আরসি ক্রিয়াকলাপ স্বয়ংক্রিয়ভাবে বাদ দিতে পারে।
আরসি সিস্টেমের বিপরীতে, এএফআইকে, রেফারেন্স-ধরণের আংশিক অপ্ট-আউট জিসি সিস্টেমে কোনও বিকল্প নয়।
আমি জানি যে প্রচুর প্রকাশিত গ্রাফিক্স এবং গেমস রয়েছে যা জিসি ভিত্তিক সিস্টেম ব্যবহার করছে এবং এও জানি যে তাদের বেশিরভাগ নির্ধারিততার অভাবে ভুগছেন। না শুধুমাত্র পারফরম্যান্স বৈশিষ্ট্যযুক্ত জন্য, কিন্তু আজীবন পরিচালনার আপত্তি। Ityক্যটি বেশিরভাগ সি ++ তে লেখা হয় তবে ক্ষুদ্র সি # অংশটি সমস্ত অদ্ভুত পারফরম্যান্স সমস্যার কারণ হয়ে থাকে। এইচটিএমএল হাইব্রিড অ্যাপ্লিকেশন এবং এখনও কোনও সিস্টেমে অপ্রত্যাশিত স্পাইক দ্বারা ভুগছেন। ব্যাপকভাবে ব্যবহৃত মানে এর চেয়ে উচ্চতর নয়। এর অর্থ হ'ল এটি সহজ এবং জনপ্রিয় তাদের কাছে যাদের কাছে অনেক বিকল্প নেই।
আপডেট 2
আবার অপ্রয়োজনীয় যুক্তি বা আলোচনা এড়াতে আমি আরও কিছু বিশদ যুক্ত করছি।
@ আশিক জিসি স্পাইক সম্পর্কে একটি আকর্ষণীয় মতামত দিয়েছেন। এটি হ'ল আমরা জিসি স্টাফগুলি অপ্ট আউট করার উপায় হিসাবে মান-প্রকারের সর্বত্রের পদ্ধতিকে বিবেচনা করতে পারি । এটি বেশ আকর্ষণীয় এবং কিছু সিস্টেমে করণীয় (উদাহরণস্বরূপ বিশুদ্ধভাবে কার্যকরী পদ্ধতির)। আমি সম্মত হই যে এটি তাত্ত্বিক দিক থেকে দুর্দান্ত। তবে বাস্তবে এর বেশ কয়েকটি ইস্যু রয়েছে। সবচেয়ে বড় সমস্যা হ'ল এই কৌশলটির আংশিক প্রয়োগ সত্য স্পাইক-মুক্ত বৈশিষ্ট্য সরবরাহ করে না।
কারণ লেটেন্সি ইস্যু সর্বদা সব কিছু না কোনও সমস্যা। আপনার যদি 10 সেকেন্ডের জন্য একটি ফ্রেম স্পাইক থাকে (= 600 ফ্রেম), তবে পুরো সিস্টেমটি অবশ্যই ব্যর্থ fail এটি কতটা ভাল বা খারাপ সে সম্পর্কে নয়। এটি কেবল পাস বা ব্যর্থ। (বা তারপরে 0.0001% এর কম) তবে জিসি স্পাইকের উত্স কোথায়? এটি জিসি লোডের খারাপ বিতরণ। এবং এটি কারণ জিসি মূলত নির্বিচারবাদী। আপনি যদি কোনও আবর্জনা তৈরি করেন তবে এটি জিসিটি সক্রিয় করবে এবং স্পাইকটি শেষ পর্যন্ত ঘটবে। অবশ্যই, আদর্শ জগতে যেখানে জিসি লোড সর্বদা আদর্শ থাকবে, এটি ঘটবে না, তবে আমি কাল্পনিক আদর্শ বিশ্বের চেয়ে বাস্তব জগতে বাস করছি।
তারপরে আপনি যদি স্পাইক এড়াতে চান তবে আপনাকে পুরো সিস্টেম থেকে সমস্ত রেফ-টাইপগুলি সরিয়ে ফেলতে হবে । কিন্তু। নেট কোর সিস্টেম এবং লাইব্রেরির মতো অদম্য অংশের কারণে এটি শক্ত, উন্মাদ এবং এমনকি অসম্ভব। কেবল নন-জিসি সিস্টেম ব্যবহার করা আরও সহজ ।
জিসির বিপরীতে, আরসি মৌলিকভাবে নির্বিচারক, এবং কেবলমাত্র স্পাইক এড়ানোর জন্য আপনাকে এই উন্মাদ অপটিমাইজেশন (খাঁটি-মান-প্রকার-কেবল) ব্যবহার করতে হবে না। আপনাকে যা করতে হবে তা হ'ল অংশটি ট্র্যাক করে নিখুঁতকরণ করা যা স্পাইকের কারণ। আরসি সিস্টেমে স্পাইকটি স্থানীয় অ্যালগরিদম ইস্যু, তবে জিসি সিস্টেমে স্পাইক সবসময় গ্লোবাল সিস্টেম ইস্যু থাকে।
আমি মনে করি আমার উত্তরটি খুব বেশি বিতর্কিত হয়ে গেছে, এবং বেশিরভাগই কেবল বিদ্যমান আলোচনার পুনরাবৃত্তি। আপনি যদি সত্যিই কিছু উচ্চতা / হীনতা / বিকল্প বা জিসি / আরসি স্টাফের যে কোনও কিছু দাবি করতে চান তবে এই সাইট এবং স্ট্যাকওভারফ্লোতে প্রচুর বিদ্যমান আলোচনা রয়েছে এবং আপনি সেখানে লড়াই চালিয়ে যেতে পারেন।