পাইথন কি সি ++ এর চেয়ে দ্রুত এবং হালকা? [বন্ধ]


92

আমি সবসময় ভেবেছিলাম পাইথনের সুবিধাগুলি কোড পাঠযোগ্যতা এবং বিকাশের গতি, তবে সময় এবং মেমরির ব্যবহার সি ++ এর মতো ততটা ভাল ছিল না।

এই পরিসংখ্যান আমাকে সত্যিই কঠোরভাবে আঘাত করেছে।

আপনার অভিজ্ঞতা আপনাকে পাইথন বনাম সি ++ সময় এবং মেমরির ব্যবহার সম্পর্কে কী বলে?


18
তাই পাইহটন এগুলির বেশিরভাগ ক্ষেত্রে ধীর এবং বেশি র‌্যাম ব্যবহার করে তবে উত্সটি আরও কম। ঠিক সমস্যা কি?
Nuriaion

4
আমার ধারণা আমি ফলাফলটির ভুল ব্যাখ্যা করেছি।
অ্যালেক্স

6
সত্যিই মজার বিষয় হ'ল সি ++ টেস্টগুলি সি'র চেয়ে এখনও 'ভাল'!
gbjbaanb

9
@ জিবিজেবায়ানব: আমাকে অবাক করে না। সি ++ অনেকগুলি বৈশিষ্ট্য যুক্ত করেছে যা সম্ভাব্যতর দ্রুত কোড সক্ষম করে। আপনি যদি জানেন যে আপনি কী করছেন, সি ++ এর চেয়ে হাস্যকরভাবে দক্ষ হতে পারে সি এর চেয়েও বেশি (অবশ্যই, সি ++ এ এমন কিছু বৈশিষ্ট্যও অন্তর্ভুক্ত রয়েছে যা পারফরম্যান্সে আঘাত দেয় তবে আপনাকে সেগুলি ব্যবহার করতে হবে না)। তবে প্রচলিত বিশ্বাস যে "সি +++ এর চেয়ে দ্রুত গতিযুক্ত" ভুল। (এবং প্রশ্নটি প্রথম স্থানে খুব অর্থবহ নয়)
জাল্ফ

4
লিঙ্কটি মারা গেছে
আরন

উত্তর:


240

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

পাইথনের সাথে আমার অভিজ্ঞতাগুলি একই নির্দিষ্ট প্রবণতা দেখায় যে কোনও গুরুতর সংখ্যার ক্রাঞ্চিংয়ের সময় পাইথন সি ++ এর চেয়ে 10 থেকে 100 গুণ কম গতিতে থাকে। এর অনেকগুলি কারণ রয়েছে, প্রধানগুলি হ'ল: ক) পাইথনের ব্যাখ্যা করা হয়, যখন সি ++ সংকলিত হয়; খ) পাইথনের কোনও আদিম পদার্থ নেই, বিল্টিন ধরণের (ইন্ট, ফ্লোট ইত্যাদি) সহ সমস্ত কিছুই বস্তু; সি) পাইথন তালিকায় বিভিন্ন ধরণের অবজেক্ট থাকতে পারে তাই প্রতিটি এন্ট্রিতে তার ধরণের সম্পর্কে অতিরিক্ত ডেটা সংরক্ষণ করতে হয়। এই সমস্ত রানটাইম এবং মেমরি উভয় খরচ মারাত্মকভাবে বাধা দেয়।

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


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

4
আমি নিশ্চিত হয়েছি আপনি কী বলেছেন এবং এটি প্রমাণ করার জন্য এটি একটি লিঙ্ক: blog.dhananjaynene.com/2008/07/…
ucefkh

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

যদি আপনি সিপিথন সম্পর্কে কথা বলেন.. তবে হ্যাঁ, তবে পাইপি বেশিরভাগ ক্ষেত্রেই খুব দ্রুত (জাভা এর সাথে তুলনীয়, জাভা আমার অনুমানের গতি 1), পাইথনের উপগ্রহগুলি প্রায় সি ++ (শেডস্কিন দেখুন) হিসাবে প্রায় দ্রুত
কুনাক্স

4
@ জাস্টিনপিল আমি প্রশ্ন করি এটি সত্য কিনা। এমনকি যখন ব্যাপক ব্যবহার numpyএবং scipyএকটি বিশাল pythonকোড বেস সম্ভবত বিশুদ্ধ পাইথন কোড অনেকটা আছে, জিনিষ তুলনায় ধীর করছে C++। একটি পাইথন স্ক্রিপ্ট একটি C++স্ক্রিপ্টের গতির দিকে এগিয়ে যাওয়ার সাথে সাথে তার Cকোডের শতাংশের দিকে যায় 100, যে বিন্দুতে এটি আর পাইথন স্ক্রিপ্ট হয় না। অজগরটি নিঃসরণ করছে, এটি অবশ্যই তত দ্রুত C++- কারণ এটি ব্যবহার করা সহজ।
dbliss

131

শুটআউটে পাইথনের সমস্ত ধীরতম (> 100x) ব্যবহারগুলি বৈজ্ঞানিক ক্রিয়াকলাপ যার জন্য উচ্চ জিএফলপ / গুলি গণনা প্রয়োজন। আপনার যাহাই হউক না কেন পাইথন ব্যবহার করা উচিত নয়। অজগর ব্যবহারের সঠিক উপায় হ'ল সেই গণনাগুলি করে এমন একটি মডিউল আমদানি করা, এবং তারপরে আপনার পরিবারের সাথে একটি স্বাচ্ছন্দ্য বিকেলে যান। যে pythonic উপায় :)


4
আজকাল বেশ কয়েকটি পাইথন-টু-সি ++ সংকলক রয়েছে , তাই পাইথন কিছু ক্ষেত্রে সি ++ এর মতো দ্রুত হতে পারে।
অ্যান্ডারসন সবুজ

26

আমার অভিজ্ঞতা মানদণ্ডের মতো। পাইথন ধীর হতে পারে এবং আরও মেমরি ব্যবহার করে। আমি অনেক লিখি, অনেক কম কোড এবং এটি প্রথমবারে অনেক কম ডিবাগিংয়ের সাথে কাজ করে। যেহেতু এটি আমার জন্য মেমরি পরিচালনা করে, তাই আমাকে কোনও মেমরি পরিচালনা করতে হবে না, মূল ফাঁসের তাড়া করার কয়েক ঘন্টা সঞ্চয় করা saving

তোমার প্রশ্নটি কি?


আমি স্রেফ বেঞ্চমার্কের ফলাফল দেখে বিভ্রান্ত হয়ে পড়েছিলাম। দেখা যাচ্ছে আমি তাদের ভুল ব্যাখ্যা দিয়েছি।
অ্যালেক্স

16

উত্সের আকারটি পরিমাপ করা আসলেই বুদ্ধিমান জিনিস নয়। উদাহরণস্বরূপ, নিম্নলিখিত শেল স্ক্রিপ্ট:

cat foobar

এর পাইথন বা সি ++ সমতুল্যগুলির তুলনায় অনেক ছোট।


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

আমি আরও বিশ্বাস করি যে সোর্স কোডের আকারটি অনেক বেশি গুরুত্বপূর্ণ এবং কিছু কাজের ক্ষেত্রে বাশ কাজটির সঠিক সরঞ্জাম। একটি সাধারণ বাশ স্ক্রিপ্টের সাথে অজগরটির সাথে তুলনা করার জন্য একটি দুর্দান্ত উদাহরণ দেখুন: আনোনোলিটিক্স / পার্টিকেলস / প্রোগ্রামিং-ভাষাগুলি / ((আপনাকে কিছুটা নিচে স্ক্রোল করতে হবে)। আমি মনে করি এটি তুলনায় কিছুটা পরিশীলিত উদাহরণ cat footer
jdg

7

এছাড়াও: সাইকো বনাম সি ++

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


4
অন্য কথায় - যেহেতু নম্বরক্রাঞ্চি স্টাফ অনেক ধীর হয় তাই এটি সি ++ এ লিখুন এবং পাইথন থেকে কল করুন :-)
igouy

4
আপনি যদি পাইথনের লাইব্রেরিটি দ্রুত তৈরি করতে ব্যবহার করেন তবে আপনি সি ++ তে একটি সংখ্যা ক্রাঞ্চিং লাইব্রেরি ব্যবহার করতে পারেন। এভাবে আপনি একগুচ্ছ কোড না লিখে সি ++ এর নমনীয়তা
বজায় রাখুন

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

6

এখানে সমস্যাটি হ'ল আপনার দুটি পৃথক ভাষা রয়েছে যা দুটি পৃথক সমস্যা সমাধান করে ... এটি এসেম্বলারের সাথে সি ++ এর তুলনা করার মতো।

পাইথন দ্রুত অ্যাপ্লিকেশন বিকাশের জন্য এবং যখন কর্মক্ষমতাটি সর্বনিম্ন উদ্বেগের হয় for

সি ++ দ্রুত প্রয়োগের বিকাশের জন্য নয় এবং নিম্ন স্তরের প্রোগ্রামিংয়ের জন্য সি থেকে গতির উত্তরাধিকার সূত্রে প্রাপ্ত।


3

পরিচালিত এবং বরাবরের মতো প্রোগ্রামিং ভাষা ব্যবহারের ক্ষেত্রে একই সমস্যা - এগুলি ধীর (এবং কখনও কখনও স্মৃতি-খাওয়া) হয়।

এগুলি প্রক্রিয়াজাতকরণের চেয়ে নিয়ন্ত্রণ করার ভাষা। যদি আমাকে চিত্রগুলি রুপান্তর করতে অ্যাপ্লিকেশন লিখতে হয় এবং পাইথনটি ব্যবহার করতে হয় তবে সমস্ত প্রসেসিং সি ++ এ লিখিত হতে পারে এবং বাইন্ডিংয়ের মাধ্যমে পাইথনের সাথে সংযুক্ত হতে পারে তবে ইন্টারফেস এবং প্রক্রিয়া নিয়ন্ত্রণটি পাইথনকে সংজ্ঞায়িতভাবে চিহ্নিত করা হত।


এই গ্রন্থাগারগুলি ইতিমধ্যে পাইথন বা সি বা জাভা জন্য লেখা, তাই কেন তাদের একসাথে আঠালো জন্য একটি গতিশীল ভাষা ব্যবহার করবেন না?
aoeu256

2

আমি মনে করি যে এই পরিসংখ্যানগুলি দেখায় যে পাইথনটি অনেক ধীর এবং এই মানদণ্ডগুলির জন্য আরও মেমরি ব্যবহার করে - আপনি কি নিশ্চিত যে আপনি সেগুলি সঠিকভাবে পড়ছেন?

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


প্রকৃতপক্ষে. যখন পারফরম্যান্স একটি ইস্যু, অজগর যা ভাল তা হ'ল উচ্চ কার্যকারিতা বাহ্যিক মডিউলগুলি একসাথে বাঁধাই করা, বা সিস্টেমটির প্রোটোটাইপ করা এবং তার পরে বাধা (সাধারণত একটি অভ্যন্তরীণ লুপের গভীরে) সি মডিউল হিসাবে পুনরায়
লেখার অনুমতি দেওয়া হয়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.