ধারণাগুলি যোগাযোগ করা ছাড়া আমি এটিকে গুরুত্বপূর্ণ খুঁজে পাইনি এবং আমি পারফরম্যান্স-সমালোচনামূলক ক্ষেত্রগুলিতে (রাইট্রেসিং, চিত্র এবং জাল প্রক্রিয়াজাতকরণ, কণা সিস্টেম, পদার্থবিজ্ঞান ইঞ্জিন ইত্যাদি) কাজ করি এবং অনেকগুলি মালিকানাধীন অ্যালগরিদম এবং ডেটা কাঠামো তৈরি করতে হয়েছিল আর অ্যান্ড ডি তে কাজ করার সময়। এই ক্ষেত্রগুলিতে, প্রায়শই খুব দক্ষ ডেটা কাঠামো এবং অ্যালগরিদমগুলি পুরো নতুন নতুন কাটিং-এজ পণ্য অর্জন করতে পারে যখন গতকালের অ্যালগোরিদমগুলি বিদ্যমান পণ্যগুলিকে অপ্রচলিত করে তোলে, তাই সবসময় আরও দক্ষতার সাথে জিনিসগুলি করার চেষ্টা থাকে। যদিও একটি সতর্কতামূলক হিসাবে, আমি আমার তৈরি করা অ্যালগরিদমে কোনও কাগজপত্র প্রকাশ করি নি। তারা সবাই মালিকানাধীন ছিল। যদি আমি তা করি, প্রমাণগুলি তৈরি করতে এবং আরও কিছু করার জন্য আমার একজন গণিতবিদের সহায়তা প্রয়োজন।
তবুও আমার মতে পুনরাবৃত্তিতে প্রতি গণনার কাজের পরিমাণ প্রায়শই অ্যালগরিদমের স্কেলিবিলিটির চেয়ে তাত্ক্ষণিক আগ্রহী না হয় যদি না অ্যালগরিদম স্কেলটি খুব খারাপ থাকে। যদি কেউ রাইট্রাকিংয়ের জন্য একটি আধুনিক প্রযুক্তি নিয়ে আসে তবে আমি অ্যালগরিদমিক জটিলতার চেয়ে ডেটা উপস্থাপন এবং অ্যাক্সেসের মতো গণ্য কৌশলগুলিতে আগ্রহী কারণ যুক্তিযুক্ত স্কেলাবিলিটি ইতিমধ্যে এই প্রতিযোগিতামূলক এবং উদ্ভাবনী দৃশ্যে প্রদত্ত is আপনি অ্যালগোরিদমগুলি যে স্কেল করে না তা নিয়ে প্রতিযোগিতামূলক হতে পারবেন না।
অবশ্যই যদি আপনি চতুর্ভুজ জটিলতার সাথে লিনিয়ারীথমিকের সাথে তুলনা করেন তবে এটি একটি বিশাল পার্থক্য। তবে আমার ক্ষেত্রের বেশিরভাগ লোকেরা একটি মহাকাব্য ইনপুটটিতে চতুর্ভুজ জটিল অ্যালগরিদম প্রয়োগ এড়াতে যথেষ্ট সক্ষম enough সুতরাং স্কেলাবিলিটিটি প্রায়শই গভীরভাবে নিহিত থাকে এবং আরও অর্থবহ এবং আকর্ষণীয় প্রশ্নগুলির মতো হয়ে যায়, "আপনি কি জিপিপিইউ ব্যবহার করেছেন? সিমডি? এটি কি সমান্তরালে চলে? আপনি কীভাবে ডেটা উপস্থাপন করলেন? আপনি কী ক্যাশে-বান্ধব অ্যাক্সেসের নিদর্শনগুলির জন্য এটি পুনর্গঠিত করেছিলেন? কীভাবে? অনেক স্মৃতি লাগে না? কি এই মামলাটি দৃ rob়তার সাথে পরিচালনা করতে পারে? আপনি কি নির্দিষ্ট প্রক্রিয়াকরণ পিছিয়ে দিচ্ছেন বা একসাথে সব করছেন? "
এমনকি প্রান্তিক অ্যালগোরিদম লিনিয়ার-টাইম অ্যালগরিদমকে ছাড়িয়ে যায় যদি প্রাক্তন মেমরিটি আরও অনুকূল প্যাটার্নে অ্যাক্সেস করে, যেমন, বা মাল্টিথ্রেডিং এবং / অথবা সিমডির জন্য আরও উপযুক্ত suited কখনও কখনও এমনকি লিনিয়ার অ্যালগোরিদম এই কারণে লোগারিদমিক অ্যালগরিদমকে ছাড়িয়ে যেতে পারে এবং স্বাভাবিকভাবেই রৈখিক সময়ের অ্যালগোরিদম কিশোরী ইনপুটগুলির জন্য লোগারিদমিকগুলিকে ছাড়িয়ে যায়।
সুতরাং আমার কাছে যা গুরুত্বপূর্ণ তা হ'ল কিছু লোকেরা "মাইক্রো-অপ্টিমাইজেশন" বলতে পারেন, যেমন ডেটা উপস্থাপনা (মেমরি লেআউট, গরম / ঠান্ডা ক্ষেত্র বিভাজন সহ অ্যাক্সেস প্যাটার্ন ইত্যাদি), মাল্টিথ্রেডিং, সিমডি এবং মাঝে মাঝে জিপিজিপিউ। যে ক্ষেত্রটিতে প্রত্যেকে নতুন কাগজগুলি সর্বদা প্রকাশিত হওয়ার সাথে সাথে প্রতিটি কিছুর জন্য কাটিং-এজ অ্যালগোরিদমগুলিতে শালীন ব্যবহারের জন্য যথেষ্ট সক্ষম, সেখানে অ্যালগরিদমিক উইজার্ডগুলিকে মারতে আপনার প্রতিযোগিতামূলক প্রান্তটি এত বেশি প্রত্যক্ষভাবে এলগোরিদমিক জটিলতায় উন্নতি করতে আসেনি come গণনার দক্ষতা।
আমার ক্ষেত্রটি উজ্জ্বল গণিতবিদদের দ্বারা আধিপত্য বজায় থাকে তবে তারা যা করছেন তার গণ্য ব্যয় বা কোডটি দ্রুততর করার জন্য নিম্ন-স্তরের প্রচুর কৌশল জানেন না always আমার খুব কম পরিশীলিত হওয়া সত্ত্বেও দ্রুত এবং শক্ততর অ্যালগরিদম এবং ডেটা স্ট্রাকচার তৈরি করার ক্ষেত্রে এগুলি সাধারণত আমার প্রান্ত। আমি হার্ডওয়্যারটি যা পছন্দ করে তা খেলছি, বিট এবং বাইটের দিকে এবং কাজের প্রতিটি পুনরাবৃত্তিটি আরও সস্তা করে তুলছি এমনকি যদি আমি সত্যিকারের পরিশীলিত অ্যালগরিদমের চেয়ে আরও কয়েকটি কাজ পুনরাবৃত্তি করি - আমার ক্ষেত্রে কাজটি অত্যন্ত সস্তা aper আমি যে কোডটি লিখি তাও অনেক সহজ হয়ে যায়। লোকেরা যদি মনে করে যে সহজ অ্যালগরিদম এবং ডেটা স্ট্রাকচারের মাইক্রো-অনুকূলিত সংস্করণগুলি বুঝতে এবং বজায় রাখা শক্ত,
একটি মৌলিক উদাহরণ হিসাবে, আমি একটি সাধারণ গ্রিড কাঠামো নিয়ে এসেছি যা সংঘর্ষ সনাক্তকরণ এবং অপ্রয়োজনীয় পয়েন্ট অপসারণের জন্য আমাদের সংস্থার একটি কেডি-ট্রিকে ছাড়িয়ে গেছে। আমার বোকা অপরিশোধিত গ্রিডটি খুব কম পরিশীলিত অ্যালগরিদমিকভাবে ছিল এবং আমি কেডি-ট্রিকে তার মধ্যম পয়েন্টটি আবিষ্কারের অভিনব পদ্ধতিতে কেডি-ট্রি প্রয়োগ করেছিলাম তার চেয়ে আমি গা mathe়ভাবে এবং অ্যালগরিদমিকভাবে অনেক বেশি গভীর ছিলাম, তবে আমি কেবল আমার গ্রিডের স্মৃতি ব্যবহার এবং অ্যাক্সেসের ধরণগুলি সুর করেছি এবং এটি আরও পরিশীলিত কিছুকে ছাড়িয়ে যাওয়ার পক্ষে যথেষ্ট ছিল।
আমার আরও একটি প্রান্ত যা আমার চেয়ে অনেক বেশি স্মার্ট লোকের দ্বারা আধিপত্যিত ক্ষেত্রটিতে আমাকে বেঁচে থাকার অনুমতি দেয় তা ব্যবহারকারীর কীভাবে কাজ করে তা বুঝতে পেরেছি যেহেতু আমি একইভাবে বিকাশকারী সফ্টওয়্যারটি ব্যবহার করি। এটি আমাকে আলগোরিদিমগুলির জন্য ধারণা দেয় যা ব্যবহারকারীর আগ্রহের সাথে খুব শীঘ্রই সারিবদ্ধ হয়। সেখানে একটি মৌলিক উদাহরণ হিসাবে, বেশিরভাগ মানুষ স্থানিক ইনডেক্সিং ব্যবহার করে সংঘর্ষ সনাক্তকরণের মতো জিনিসগুলিকে ত্বরান্বিত করার চেষ্টা করে। জৈব মডেলগুলির জন্য আমি প্রায় কয়েক দশক আগে একটি সাধারণ ক্যারিয়ার-আকারের পর্যবেক্ষণ করেছি যা উদাহরণস্বরূপ, কোনও চরিত্র যদি তার মুখের উপরে হাত রাখে তবে একটি স্থানিক সূচক কাঠামো নোডগুলি বিভক্ত করতে হবে এবং চরিত্রটি যদি ব্যয়বহুল আপডেট করতে পারে তারপরে তার মুখটি তার হাত থেকে সরিয়ে নিল। যদি এর পরিবর্তে, আপনি ভার্টেক্স অবস্থানের পরিবর্তে সংযোগ ডেটার ভিত্তিতে পার্টিশন করেন, আপনি একটি স্থিতিশীল শ্রেণিবিন্যাসের সাথে শেষ করতে পারেন যা খুব দ্রুত আপডেট হয় এবং কখনই গাছকে বিভাজন বা ভারসাম্য বানাতে হয় না (কেবলমাত্র অ্যানিমেশনের প্রতিটি ফ্রেমে বাউন্ডিং বক্সগুলি আপডেট করতে হবে) ... এই জাতীয় জিনিস - কোনও ভারী গাণিতিক ব্যাকগ্রাউন্ড ছাড়াই একটি শিশুকে অ্যালগরিদম করে তারা যদি কেবল প্রাথমিক ধারণাটি বোঝে তবেই এটি উপস্থিত হতে পারে তবে গণিতবিদরা যেহেতু ব্যবহারকারীরা কীভাবে কাজ করেছিলেন এবং জ্যামিতির বৈশিষ্ট্য সম্পর্কে কীভাবে জ্যামিতির বৈশিষ্ট্য নিয়ে নয় সে সম্পর্কে খুব চিন্তাভাবনা করছেন এমনভাবে তারা কোনও বিষয় নিয়ে ভাবছেন না since সাধারণত ব্যবহৃত হত। অ্যালগরিদমিক উইজার্ড্রির চেয়ে সাধারণ কম্পিউটেশনাল জ্ঞান এবং ব্যবহারকারীর সমাপ্ত জ্ঞানকে আরও ঝুঁকিয়ে আমি যথেষ্ট পরিমাণে এগিয়ে এসেছি। যাইহোক, অ্যালগরিদমিক জটিলতায় ফোকাস করা আমার পক্ষে সত্যিকার অর্থে গুরুত্বপূর্ণ মনে হয়নি।