প্রথমত, আমি 90% অ্যাপ্লিকেশনগুলিতে বুঝতে পারি পারফরম্যান্সের পার্থক্যটি সম্পূর্ণ অপ্রাসঙ্গিক, তবে আমার কেবলমাত্র দ্রুত নির্মাণ কোনটি তা জানতে হবে। যে এবং ...
নেটে তাদের কাছে বর্তমানে উপলব্ধ তথ্য বিভ্রান্তিকর। প্রচুর লোক বলেছেন ফোরঞ্চ খারাপ, তবে প্রযুক্তিগতভাবে এটি দ্রুত হওয়া উচিত কারণ এটি মনে করা হয় যে এটিরেটরগুলি ব্যবহার করে একটি অ্যারে ট্র্যাভারসাল লেখা সহজ করা যায়। Iteters, যা আবার মনে হয় দ্রুত হয়, কিন্তু পিএইচপি মধ্যে স্পষ্টতই মৃত ধীর (বা এটি একটি পিএইচপি জিনিস না?)। আমি অ্যারে ফাংশনগুলির বিষয়ে বলছি: পরের () পূর্ব () পূর্ববর্তী () পুনরায় সেট করুন () ইত্যাদি ভাল, যদি তারা এমনকি ফাংশন হয় এবং সেই পিএইচপি ভাষার বৈশিষ্ট্যগুলির মধ্যে একটিও নয় যা ফাংশনগুলির মতো দেখায়।
এটিকে কিছুটা সংকুচিত করার জন্য : আমি 1 এর চেয়ে বেশি কোনও পদক্ষেপে অ্যারেগুলি ঘুরে বেড়ানো সম্পর্কে আকর্ষণীয় নই (কোনও নেতিবাচক পদক্ষেপ নয়, অর্থাৎ বিপরীত পুনরাবৃত্তি)। আমি কেবল 0 দৈর্ঘ্য থেকে নির্বিচার পয়েন্টগুলিতে এবং ট্র্যাভারসাল সম্পর্কে আগ্রহী নই। আমি নিয়মিতভাবে 1000 টিরও বেশি কীগুলির সাথে অ্যারে হেরফের করতে দেখি না, তবে আমি দেখতে পাচ্ছি যে কোনও অ্যারের অ্যাপ্লিকেশনটির যুক্তিতে একাধিকবার অতিক্রম করা হচ্ছে! অপারেশন হিসাবে, মূলত শুধুমাত্র স্ট্রিং ম্যানিপুলেশন এবং প্রতিধ্বনিত।
এখানে কয়েকটি রেফারেন্স সাইট রয়েছে:
http://www.phpbench.com/
http://www.php.lt/benchmark/phpbench.php
যা আমি সর্বত্র শুনি:
foreach
ধীর এবং এইভাবেfor
/while
দ্রুত হয় /- পিএইচপিগুলি
foreach
এটির পুনরাবৃত্তি করে এমন অ্যারের অনুলিপি করে; এটিকে দ্রুত করতে আপনার উল্লেখগুলি ব্যবহার করা দরকার - এর মতো কোড: একটির চেয়ে দ্রুত
$key = array_keys($aHash); $size = sizeOf($key);
for ($i=0; $i < $size; $i++)foreach
এখানে আমার সমস্যা। আমি এই পরীক্ষার স্ক্রিপ্টটি লিখেছি: http://pastebin.com/1ZgK07US এবং আমি স্ক্রিপ্টটি যতবার চালাই না কেন, আমি এরকম কিছু পাই:
foreach 1.1438131332397
foreach (using reference) 1.2919359207153
for 1.4262869358063
foreach (hash table) 1.5696921348572
for (hash table) 2.4778981208801
সংক্ষেপে:
foreach
foreach
রেফারেন্স তুলনায় দ্রুতforeach
তুলনায় দ্রুতfor
foreach
for
হ্যাশ টেবিলের চেয়ে দ্রুত
কেউ কি ব্যাখ্যা করতে পারেন?
- আমি কি ভুল কিছু করছি?
- পিএইচপি ফোরচ রেফারেন্স জিনিসটি কি সত্যিই কোনও পার্থক্য আনছে? মানে আপনি যদি রেফারেন্স দিয়ে পাস করেন তবে কেন এটি অনুলিপি করবেন না?
- ফরচ স্টেটমেন্টের সমতুল্য পুনরাবৃত্তকারী কোডটি কী; আমি নেটে কয়েকটি দেখেছি তবে প্রতিবারই আমি তাদের পরীক্ষা করে দেখছি সময়টি বন্ধ হয়ে গেছে; আমি কয়েকটি সাধারণ পুনরাবৃত্তকারী নির্মাণও পরীক্ষা করেছি তবে কখনও উপযুক্ত ফলাফল পাবে বলে মনে হয় না - পিএইচপি-তে অ্যারে পুনরাবৃত্তিগুলি কি ভয়াবহ?
- ফর / ফরচার (এবং WHIL) ব্যতীত অন্য কোনও অ্যারে থাকলেও পুনরাবৃত্তি করার জন্য কি আরও দ্রুত উপায় / পদ্ধতি / গঠন রয়েছে?
পিএইচপি সংস্করণ 5.3.0
সম্পাদনা: উত্তর এখানকার লোকদের সহায়তায় আমি সমস্ত প্রশ্নের উত্তর একসাথে করতে সক্ষম হয়েছি। আমি তাদের এখানে সংক্ষেপ করব:
- "আমি কি ভুল কিছু করছি?" Sensকমত্য বলে মনে হচ্ছে: হ্যাঁ, আমি বেঞ্চমার্কে প্রতিধ্বনি ব্যবহার করতে পারি না। ব্যক্তিগতভাবে, আমি এখনও দেখতে পাচ্ছি না যে মৃত্যুর নির্ধারিত সময়ের সাথে প্রতিধ্বনি কিছু ফাংশন কীভাবে বা অন্য কোনও ফাংশন কীভাবে অন্যরকম হয় - যা এবং সেই স্ক্রিপ্টটির দক্ষতা ঠিক সমস্ত কিছুের চেয়ে ঠিক ঠিক একই ফলাফল উত্পন্ন করতে পারে যদিও "আপনি প্রতিধ্বনি ব্যবহার করছেন" ঠিক আছে তা বোঝাতে (ভাল করে আমার কী ব্যবহার করা উচিত ছিল)। তবে, আমি স্বীকার করি পরীক্ষা আরও ভাল কিছু করা উচিত; যদিও একটি আদর্শ আপস মাথায় আসে না।
- "পিএইচপি ফোরচ রেফারেন্সের জিনিসটি কি আসলেই কোনও পার্থক্য আনছে? মানে আপনি যদি রেফারেন্স দিয়ে পাস করেন তবে এটি কেন এটি অনুলিপি করবে না?" আর্কম্যাক্সেল দেখায় যে হ্যাঁ, এটি আরও পরীক্ষার মাধ্যমে প্রমাণিত হয় যে বেশিরভাগ ক্ষেত্রে রেফারেন্সটি দ্রুত হওয়া উচিত - যদিও আমার উপরের কোডের স্নিপেট দেওয়া হয়েছে, অবশ্যই স্পষ্টভাবে সমস্তটি বোঝায় না। আমি গ্রহণ করি যে বিষয়টি সম্ভবত এ জাতীয় স্তরে বিরক্ত করার জন্য খুব স্বজ্ঞাত নয় এবং প্রতিটি অবস্থার জন্য কোনটি আরও ভাল তা নির্ধারণ করার জন্য পচানোর মতো চূড়ান্ত কিছু প্রয়োজন হবে।
- "ভবিষ্যদ্বাণী বিবৃতিটির সমতুল্য পুনরাবৃত্তকারী কোডটি কী; আমি নেটে কয়েকটি দেখেছি কিন্তু প্রতিবারই তাদের পরীক্ষা করে দেখছি সময়টি বন্ধ is - পিএইচপি-তে অ্যারে পুনরাবৃত্তিকারী কি কেবল ভয়ঙ্কর? " আইআরম্যাক্সেল উত্তরটি নমুনা সরবরাহ করেছে; যদিও কোডটি কেবল পিএইচপি সংস্করণ> = 5 এর জন্য বৈধ হতে পারে
- "ফর / ফরচার (এবং WHIL) ব্যতীত অন্য কোনও অ্যারে হলেও পুনরাবৃত্তি করার জন্য কি আরও দ্রুত উপায় / পদ্ধতি / গঠন রয়েছে?" উত্তরের জন্য গর্ডনের কাছে ধন্যবাদ। পিএইচপি 5 এ নতুন ডেটা প্রকারের ব্যবহারের ক্ষেত্রে পারফরম্যান্স বুস্ট বা মেমরি বুস্ট দেওয়া উচিত (যার মধ্যে কোনওটি আপনার পরিস্থিতির উপর নির্ভর করে কাঙ্ক্ষিত হতে পারে)। যদিও গতি অনুসারে নতুন ধরণের অ্যারের অনেকগুলি অ্যারে () এর চেয়ে ভাল বলে মনে হয় না, তবে স্প্ল্পপ্রিয়রিটিকিউ এবং স্প্লোবজেক্টটোরেজ যথেষ্ট গতিযুক্ত বলে মনে হয়। গর্ডন সরবরাহ করেছেন লিঙ্ক: http://matthewturland.com/2010/05/20/new-spl-features-in-php-5-3/
যারা সাহায্য করার চেষ্টা করেছেন তাদের সবাইকে ধন্যবাদ।
আমি সম্ভবত কোনও সহজ ট্রভারসাল জন্য ভবিষ্যদ্বাণী (অ-রেফারেন্স সংস্করণ) ধরে থাকব।