مقایسه Python و C++

مقایسه ++C و پایتون

5/5 - امتیاز کاربران

داشتم پروژه های نمونه Opnecv (شامل image stitching و image stitching detailed) برای تولید تصاویر پانوراما را تحلیل می کردم که به عنوان مثال درس بینایی ماشین در کلاس توضیح دهم. برای درک بیشتر، به دنبال مثالهایی با توضیحات کاملتر در وب بودم که در حین جستجو به پروژه ای رسیدم که با پایتون نوشته شده بود و خیلی خوب تمام بخشهایش توضیح داده شده بود. این شد که پایتون را به ویژوال استودیو اضافه کرده و پروژه مذکور را را کامپایل و اجرا کردم. دیدم با وجود اینکه این برنامه از نسخه باینری کتابخانه OpenCV استفاده می کند، زمان اجرا خیلی کند است. بررسی کردم دیدم مشکل سر یک تابعی هست که دو حلقه for تو در تو دارد و کل تصویر را اسکن می کند. برای مقایسه با ++C تصمیم گرفتم کد را به ++C بنویسم و این شد که پایتون را یاد گرفتم و کد را به ++C تبدیل کردم.

مقایسه زمان اجرای برنامه در پایتون و ++C

نتیجه مقایسه جالب بود. غیر از حلقه for بقیه بخشها از نظر زمانی تقریبا یکسان بود چرا که هر دو از کتابخانه OpenCV استفاده می کردند که اصالتا کد ++C است. اما در حلقه for کد ++C نزدیک به ۱۰ برابر سریعتر از پایتون اجرا می شود. زمانها را ببینید:
مقایسه سی پلاس پلاس و پایتون

​زمان اجرای کد سی پلاس پلاس ۱٫۲۵ ثانیه و زمان اجرای کد پایتون ۱۰٫۴۷ ثانیه بود.
از این زمانها در پایتون حدود ۱٫۵ ثانیه مربوط به توابع داخلی OpenCV بوده و ۹ ثانیه مربوط به حلقه for تو در تو است که روی کل تصویر جاروب می شود.

شاید به این مقاله هم علاقه داشته باشی
اسپکتروگرام: پردازش صوت با استفاده از روش های پردازش تصویر

در C++ کل زمان تقریبا مربوط به توابع داخلی OpenCV بوده و حلقه for تودرتو تنها ۰٫۰۰۲ ثانیه زمان برد.

لذا در کل برنامه، ++C حدود ۱۰ برابر سریعتر بوده و در حلقه for تفاوت سرعت وحشتناک است: ۹ ثانیه به ۰٫۰۰۲ ثانیه می شود ۴۵۰۰ برابر سرعت بهتر ++C نسبت به زبان اسکریپتی پایتون.

نتیجه مقایسه ++C و پایتون

پایتون بسیار ساده تر از ++C است. لذا اگر برنامه نویس حرفه ای ++C هستید در کمتر از یک روز پایتون را یاد می گیرید. سرعت کد نویسی پایتون به دلیل داشتن امکانات فراوان، که الان جای بحثش نیست، زیاد است. اما دو مشکل دارد: یکی اسکریپتی بودن و اجرای خط به خط که همیشه نیازمند این هستید که پایتون (همان ورژنی که شما استفاده کرده اید) در کامپیوتر مقصد نصب باشد. دوم سرعت کم در حلقه ها و دستورات شرطی.

لذا برای کاربردهایی که پردازشهای سنگین و حلقه های زیاد ندارید استفاده از پایتون خوب است. برای کارهای پردازشی یا باید سراغ ++C بروید یا اینکه اگر اصرار به استفاده از پایتون دارید، بخشهای پردازشی کد را حتما از نسخه های باینری کتابخانه های ثالث استفاده کنید. اگر شما هم تجربه ای دارید در نظرات همین پست، به اشتراک بگذارید.

سایر عناوین این مطلب:

کدام زبان برنامه نویسی برای پردازش تصویر و یادگیری ماشین مناسب تر است؟

سی پلاس پلاس بهتر است یا پایتون؟

C++ سریعتر است یا Python پایتون؟

آی پلاک

نرم افزار پلاک خوان با قابلیت ثبت لحظه ای پلاک خودرو ها، جستجو و گزارشگیری و کنترل هوشمند راهبند و گیت

دوربین پلاک خوان
SH-D1232R

دوربین پلاک خوان تحت شبکه
مناسب برای جاده ها و پارکینگ

دوربین پلاک خوان
SH-D1531P

دوربین پلاک خوان تحت شبکه
مناسب برای پارکینگ ها

دوربین پلاک خوان
SH-CP1130101-M

دوربین پلاک خوان تحت شبکه
مناسب برای جاده ها و پارکینگ

6 پاسخ

  1. پایتون هم جای خود داره کسی میخاد راحت‌تر کد بزنه پایتون باید انتخاب کنه
    پایتون برای این نوشته شده که عموم مردم به با زبان برنامه نویسی ارتباط برقرار کنند
    کسی که میخواد وارد دنیای برنامه نویسی بشه پدرش در میاد c++ یاد بگیره ولی در عرض یک روز پایتون مقدماتی تمام میکنه

  2. به همین جهت تلگرام رو با C++نوشتن. خیلی دنبال این موضوع بودم که توسایت شما دیدم. من پایتون کار میکردم ولی دوست داشتم که برم سراغ C++ که با خوندن این مطلب مصمم شدم برم سراغ C++

  3. چه بررسی مفید و ارزشمندی ،متشکرم.
    چه خوب اگر که سرعت اجرا در زبان c و c++ و go را نیز مورد بررسی قرار می دادید و همچنین در ابعاد دیگر مانند سهولت یادگیری و …نیز بررسی می کردید و توصیه های اینچنینی ارائه می دادید که کدام گزینه من حیث المجموع گزینه ی پیشنهادی شماست.

    1. c و ++c را هم قبلا مقایسه کرده ام. تقریبا زبان C بین ۵ تا ۱۰% (بسته به میزان استفاده از کلاسها) از ++C سریعتر است اما امکانات ++C ارزش این مختصر کاهش سرعت را دارد.
      در مورد go تجربه ای ندارم.

  4. اکثرا زبان های اسکریپتی یه هدفی رو دنبال میکنن.
    به نظر من نقطه قوت پایتون همه کاره بودن و آسون بودنشه
    یا سطح بالا بودنش.
    ولی به طور کلی هیچ وقت نمیشه از یه زبان اسکریپتی انتظاراتی رو داشت که از زبان قدرتمند و سطح پایینی مثل c++ میره رو داشت از نظر سرعت پردازش. پایتون یه شروع خوب واسه یادگیریه ولی وقتی حرف از برنامه نویسی حرفه ای هست به نظرم هر زبانی مربوط به یه شاخه یا موقعیت خاصه. بستگی داره چی بخواید ازش.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دانلود دمو رایگان آی پلاک

به دنبال پلاک خوان هستید؟