কেন (পয়েন্ট-মিনিট) 1 এর চেয়ে অনেক বেশি জনপ্রিয়?


16

আমি ইমাস গিট রেপোতে সমস্ত ইমাস লিস্প ফাইল জুড়ে অনুসন্ধান করেছি এবং (goto-char (point-min))3621 বার দেখা গেছে এবং (goto-char 1)31 বার দেখা গেছে। ব্যক্তিগতভাবে, আমি অনেক (point-min)কিছুই দেখি 1, এমনকি অনেক ক্ষেত্রেই এটি 100% নিশ্চিত যে অঞ্চলটি সংকীর্ণ নয়। সুতরাং এখানে আমার প্রশ্ন: আন-সংকীর্ণ বাফারের (point-min)চেয়েও কি এখনও পছন্দ হয় 1?

আমি অনুমান করি 1তার চেয়ে দ্রুততর (point-min), এটি কোনও সামান্য সামান্য কোনও ম্যাটার নয় কারণ একটি ফাংশন কল থাকার 1সময় ধ্রুবক থাকে (point-min)। এছাড়াও, 11 টি অক্ষর বনাম 1 1টির চেয়ে অনেক খাটো (point-min)


2
আপনি কি এমন উদাহরণ প্রদান করতে পারেন যেখানে "এটি 100% নিশ্চিত যে অঞ্চলটি সংকীর্ণ নয়"? আমার ধারণা আপনি প্রশস্ত হওয়ার পরে অবিলম্বেই বোঝাচ্ছেন? এটি কি আসলেই "অনেকগুলি ঘটনা"?
ওমর

1
আমি সর্বদা ভেবেছিলাম বাফারটি 0 থেকে শুরু হয় ...
ওমাইর মজিদ

উত্তর:


28

আপনি কীভাবে জানবেন যে বাফারটি সংকীর্ণ নয়?

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

কোড পঠনযোগ্যতা কিং

আপনি যখন লিখবেন (goto-char 1), ব্যক্তি কোডটি পড়ছেন (6 মাস পরে আপনাকে অন্তর্ভুক্ত করবেন) মূল্যবান মস্তিষ্কের চিন্তাভাবনা ব্যয় করবে

  • "বাফারটি সংকীর্ণ নয় কীভাবে আমরা জানি?" এবং
  • "প্রথম চরিত্রটি 0 বা 1?"

মূলত, আপনার (widen)ঠিক আগে না থাকলে আপনার বাফারটি সংকীর্ণ না হওয়ার বিষয়ে কেন আত্মবিশ্বাস রয়েছে তা বোঝাতে একটি মন্তব্য প্রয়োজন।

ব্যয় তুচ্ছ

আপনি যদি নিজের কোড প্রোফাইল না করে এবং অন্যথায় খুঁজে না পান তবে একটি নিরাপদ অনুমান হ'ল এখানে ব্যয়টি তুচ্ছ। সমস্ত অন্যান্য জিনিস ELisp করে (নেটওয়ার্ক, ডিস্ক অ্যাক্সেস, এমনকি স্ট্রিং ম্যাচিং) তুলনায় (point-min)একটি অর্থপূর্ণ খরচ থাকবে না (এবং এমনকি হতে পারে সস্তা , স্টিফান এর উত্তর দেখুন)।


2
+1, বিশেষত অপ্রত্যাশিত উপায়ে সম্ভাব্য ব্যবহার গ্রহণের উপর জোর দেওয়ার জন্য এবং অন্যান্য প্রসঙ্গে সম্ভাব্য পুনঃব্যবহারের জন্য। যে ফাংশনটি ব্যবহার করে point-minতা সাধারণত যেটি ব্যবহার করে তার চেয়ে বেশি সাধারণ 1- এটি অঞ্চল সংকীর্ণ কিনা তা সাধারণত কাজ করতে পারে।
ড্র

19

এসডিএস এর উত্তর (যা দিয়ে আমি পুরোপুরি একমত) পরিপূর্ণ করার জন্য, চেহারাগুলো সত্ত্বেও, (point-min)অধিক কার্যকরী হতে পারে 1। কার্যকর করার গতির ক্ষেত্রে, আমার পরীক্ষাগুলি কোনও পরিমাপযোগ্য পার্থক্য দেখতে পায় না, তবে আকারের ক্ষেত্রে:

ELISP> (byte-compile '(lambda () (goto-char (point-min))))
#[nil "eb\207" [] 1]

ELISP> (byte-compile '(lambda () (goto-char 1)))
#[nil "\300b\207" [1] 1]

ELISP> 

কারণ point-minএর নিজস্ব বাইট-কোড রয়েছে এবং তাই অন্য ফাংশন কলগুলির তুলনায় খুব দক্ষতার সাথে এনকোডড এবং কার্যকর করা হয়েছে।

অবশ্যই, আমার ব্যবহারের point-minআর একটি কারণ হ'ল আমি theতিহাসিক পছন্দটিকে 1ভুল হিসাবে বিবেচনা করি (বাফারগুলি 0 থেকে শুরু করা উচিত ছিল)।


2
আপনি যে কারণটি দিচ্ছেন কেবলমাত্র এটির জন্য বাইট কোডটি point-minকিছুটা ছোট? দেখতে বেশ পল্ট্রি কারণ মনে হচ্ছে। কেন এটিকে গুরুত্ব দিন? অথবা হতে পারে আপনার উত্তরটি আসলে একটি মন্তব্য হিসাবে বোঝানো হয়েছিল , কেবলমাত্র এই ধারণাটি সংশোধন করার জন্য যে একজনের চেয়ে একজন অন্যরকম পারফরম্যান্ট বা এর 1ফলে ছোট বাইট কোডের ফলাফল হয়?
ড্র করেছেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.