প্রতিবিম্ব: প্রতিবিম্বটি কি এখনও "খারাপ" বা "ধীর" ব্যবহার করছে? ২০০২ সাল থেকে প্রতিবিম্বের সাথে কী পরিবর্তন হয়েছে?


21

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

সুতরাং, যদি কিছু পরিবর্তন হয়েছে? এটা কি কেবল যন্ত্রের গতি? প্রতিবিম্ব গতি বাড়ানোর জন্য কাঠামোর পরিবর্তন হয়েছে?

নাকি আসলে কিছুই বদলেছে? প্রতিবিম্বটি ব্যবহার করা কি এখনও "খারাপ" বা "ধীর"?


2
প্রতিচ্ছবি প্রত্যক্ষ কলগুলির চেয়ে সর্বদা ধীর হবে কারণ আপনি যা কল করছেন তা যাচাই করে তা যাচাই করতে আপনাকে বেশ কয়েকটি পদক্ষেপ করতে হবে।
মাইকেল কে

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

এনামে একটি আইটেম টানতে গেটটাইপের সাহায্যে একটি প্রতিচ্ছবি সম্পাদন করা এনাম.পার্স () এর সাথে ব্যতিক্রম ছোঁড়ার চেয়ে 30 গুণ বেশি দ্রুত। তাই প্রতিচ্ছবি কখনও কখনও জয়।
Brain2000

উত্তর:


16

প্রতিচ্ছবি খারাপ বা ধীর নয়। এটি কেবল একটি সরঞ্জাম। সমস্ত সরঞ্জামের মতো এটি নির্দিষ্ট দৃশ্যের জন্য খুব মূল্যবান, অন্যদের পক্ষে তেমন মূল্যবান নয়।

পারফরম্যান্সটি যদি সত্যিই সমস্যা হয় তবে আপনি সর্বদা ফেস্টারফ্লেকের মতো একটি লাইব্রেরি ব্যবহার করতে পারেন ।

আরও পঠন
যদি প্রতিফলন অদক্ষ হয়, কখন এটি সবচেয়ে উপযুক্ত?


বা dynamic- দৃশ্যত প্রতিবিম্বের চেয়ে দ্রুততার একটি ক্রম।
ওদে

1
পারফরম্যান্স মোটেই সমস্যা নয়। আমি কেবল স্পষ্টভাবে মনে রেখেছিলাম যে লোকেরা প্রতিফলন এড়ায় 2002 এর মতো এটি প্লেগ ছিল। আমি ভাবছি তখন থেকে কী পরিবর্তন হয়েছে।
ব্লেশ

3
@blesh: কিছুই না। লোকেরা এখন এটির সাথে বেশি পরিচিত এবং এর থেকে কম ভয় পাচ্ছে।
রবার্ট হার্ভে

5
আমি সবাই এখানে "আমার লন ছেড়ে" যেতে পারি এবং বলতে পারি যে ওওপিপি থাকার আগে লিস্পের অনেক আগে এই ছিল ...
মাইকেল কে

যথেষ্ট ফর্সা। আমি কেবল ভাবছিলাম যে গত দশ বছরে মেশিনগুলির গতি বৃদ্ধি পেয়েছিল যা পার্থক্য তৈরি করেছে বা যদি বাস্তবে সিস্টেমের মধ্যে কিছু পরিবর্তন ঘটেছিল।
19:42 এ

17

লোকেরা অপ্রয়োজনীয়ভাবে প্রতিবিম্ব ব্যবহার করতে সতর্ক হওয়ার কারণটি সম্পাদন নয়: হ্যাঁ, প্রতিবিম্বটি ব্যবহার করার ক্ষেত্রে কিছু ওভারহেড রয়েছে, তবে প্রায়শই, সমস্যাটি সমাধান না করে তুলনীয় জটিলতার সাথে আলাদা পদ্ধতির প্রয়োজন হয়, এবং তা না হলেও ওভারহেড হয় খুব কমই তাৎপর্যপূর্ণ (বিশেষত অ্যাপ্লিকেশন-স্তরের বিকাশের জন্য)।

প্রতিবিম্ব ব্যবহার করে, উত্স কোড সম্পর্কে কেউ সাধারণত তৈরি করতে পারে এমন কয়েকটি গুরুত্বপূর্ণ অনুমানগুলি ভেঙে যায় এবং "সমস্ত রেফারেন্সগুলি অনুসন্ধান করুন" এর মতো সরঞ্জামগুলি নির্ভরযোগ্যভাবে কাজ করা বন্ধ করে দেয়। প্রতিফলনটি মূলত সংকলক প্রয়োগ করে, সি # বলে, এবং টাইপ সিস্টেমটি সাধারণত সংকলক ত্রুটিগুলিতে ধরা এবং অনুবাদ করতে পারে এমন বেশিরভাগ প্রোগ্রামিং ত্রুটিগুলি মুছে ফেলে, এখন রানটাইম ত্রুটি হয়ে ওঠে সবচেয়ে খারাপ বা খুব অস্পষ্ট বাগগুলি worst

তাহলে লোকেরা কেন তখন প্রতিবিম্ব ব্যবহার করে? সোজা কথায়, কারণ উপরে বর্ণিত সমস্যা থাকা সত্ত্বেও, এটি একটি অত্যন্ত মূল্যবান সরঞ্জাম। প্রতিবিম্বের সাথে ডায়নামিক প্রোগ্রামিংয়ের কিছু উপকারিতা সি # এর মতো একটি স্ট্যাটিক, কঠোরভাবে টাইপ করা ভাষায় থাকতে পারে এবং ডায়নামিক প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি সম্প্রতি তাদের দক্ষতা প্রদর্শন করেছে, বিশেষত ওয়েব প্রোগ্রামিংয়ের ক্ষেত্র - পিএইচপি, জাভাস্ক্রিপ্ট, এবং বেশ সুস্পষ্টভাবে পাইথনকে , সকলেই ডায়নামিক টাইপিং ব্যবহার করে এবং ওয়েব প্রোগ্রামিংয়ের জন্য উপযুক্ত বলে প্রমাণিত। তবে ভাষাটি এখনও সি # হওয়ায় আপনি আপনার বেশিরভাগ অ্যাপ্লিকেশনটিকে কঠোরভাবে টাইপ করা ওওপি আইডিয়োমে রাখতে বেছে নিতে পারেন এবং ছোট অংশটি লিখতে পারেন যেখানে ডায়নামিক আচরণটি প্রতিচ্ছবিতে সত্যই পার্থক্য করে।

একটি সাধারণ উদাহরণ হ'ল যখন আপনাকে ওয়েব পরিষেবা কল হিসাবে পদ্ধতিগুলি উদ্ঘাটিত করতে হবে (প্রোটোকলটি এখনও। নেট মধ্যে অন্তর্নির্মিত নয়) ব্যবহার করতে হবে। কঠোরভাবে টাইপযুক্ত ওওপি পদ্ধতি কাজ করে তবে এটি অত্যধিক সীমাবদ্ধ এবং আনাড়ি। তবে আপনি যদি পদ্ধতিগুলিতে কলগুলি এবং কী / মান জোড় যুক্তিগুলিতে মানচিত্রের প্রতিচ্ছবি ব্যবহার করেন, আপনি একবার এই জাতীয় ওয়েব সার্ভিসের জন্য নদীর গভীরতানির্ণয়টি লিখতে পারেন এবং তারপরে এটি আপনার পছন্দ মতো কোনও ক্লাসে ব্যবহার করতে পারেন।


13

প্রতিচ্ছবি সরাসরি কলগুলির তুলনায় এখনও উল্লেখযোগ্যভাবে ধীর। দুটি জিনিস পরিবর্তিত হয়েছে:

  • রানটাইমগুলি প্রতিচ্ছবি প্রক্রিয়াটিকে অনুকূলিত করেছে যাতে পার্থক্য আরও কম হয়ে যায়
  • সিপিইউগুলি দ্রুততর হয়েছে যাতে ছোট অদক্ষতাগুলি সহ্য করা সহজ হয়

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


4
হায়, সিপিইউ ধীর হয়ে গেছে - সাধারণত মোবাইল ডিভাইস এবং সার্ভারে যেখানে লোকেরা তাদের সার্ভারগুলি চালনার ব্যয়ের কারণে যতটা সম্ভব সাফল্য অর্জন করার চেষ্টা করছে are
gbjbaanb

@gbjbaanb: আমি আপনাকে মোবাইল ডিভাইস দেব, তবে সার্ভারে কোডটি অপ্টিমাইজ করার চেয়ে বেশি হার্ডওয়্যার কেনা হ'ল বেশিরভাগ ক্ষেত্রেই গ্রহণযোগ্য এবং যৌক্তিক পছন্দ, কারণ সার্ভার কেনা এবং চালানো ব্যয় তুলনায় অনেক কম are কোডটি অনুকূলকরণের ব্যয় of
মাইকেল বর্গওয়ার্ট

2
কিছু পরিস্থিতিতে সার্ভারের ব্যয় নাটকীয়ভাবে উন্নয়নের ব্যয়কে ছাড়িয়ে যায়। বড় স্কেল আউট শৈলীতে। যদিও সার্ভারগুলি বাফ হয়, ক্লায়েন্ট মেশিনের চেয়ে পারফরম্যান্স আরও জটিল হতে পারে। এটি কেস দৃশ্যের দ্বারা কেস।
লর্ড টাইডাস

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