تکنیک‌های افزایش سرعت MATLAB شامل روش‌هایی چون آنالیز عملکرد برنامه، بردارسازی و تبدیل کدهای MATLAB به فایل‌های MEX می‌شود. MATLAB یک ابزار فوق العاده در پیاده سازی و اجرای الگوریتم‌ها می‌باشد. این نرم افزار با ایجاد محیط برنامه نویسی ساده و ارائهٔ کتابخانهٔ گسترده ای از توابع، امکان اجرا، تحلیل و نمایش الگوریتم‌های پیچیده را به کابر می‌دهد. این مقاله به مرور روش‌های افزایش سرعت نرم افزار MATLAB می‌پردازد و مباحثی چون آنالیز عملکرد برنامه، بردارسازی و تبدیل کدهای MATLAB به فایل‌های MEX را پوشش می‌دهد.

چرا سرعت MATLAB پایین است؟
MATLAB یک زبان ترجمه شده (interpreted) می‌باشد. این بدان معنی است که هر عملیات نیاز به پردازش اضافی دارد. در زبان‌های تفسیر شده چون C یا c++ این زمان اضافی را نداریم. MATLAB دارای مکانیزم ایجاد کد بصورت لحضه ای و فوری می‌باشد که این مشکل را در مواردی کاهش می‌دهد.

برای انجام یک دستورالعمل ساده در MATLAB، مترجم باید به اپرندهای مربوطه رجوع کند و محاسبات صحیح را برای اجرا انتخاب کند. این انتخاب بستگی به انواع داده (حقیقی، مختلط، کاراکتر، منطقی و …) و شکل اپرندها (اسکالر، ردیف، ستون، ماتریس و …) دارد. هنگامی که دستورالعمل‌ها انجام شد، مقادیر بدست آمده باید ذخیره شود. برای یک تخصیص حافظهٔ ساده، مترجم MATLAB باید هر دو اپرند ورودی و خروجی را مد نظر قرار دهد و تصمیم بگیرد که آیا احتیاج هست که حافظهٔ بیشتری اختصاص یابد یا اینکه مقادیر بدست آمده باید در عمل اختصاص حافظه تبدیل شوند.

این پردازش اضافی که صرف عمل اختصاص و انتخاب می‌گردد عامل اصلی کند بودن MATLAB نسبت به زبان‌های تفسیر شده است. این زمان اضافی هنگامی قابل توجه است که عملیاتی روی اسکالرها یا مجموعهٔ کوچکی از داده‌ها انجام می‌شود. به همین دلیل حلقه‌هایی که درآن عملیات عددی انجام می‌شود سرعت اجرای پایینی در MATLAB دارند.

توجه کنید که اگر ۸۰ درصد زمان اجرا به ۲۰ خط از برنامه یا اجرای یک تابع اختصاص یابد، این قسمت همان جایی است که باید بهینه گردد.

استفاده از ابزار MATLAB Profiler راه بسیارخوبی در تشخیص نقاطی از برنامه است که اجرای آن سنگین می‌باشد. این نقاط که اجرای آن سخت و وقت گیر است، اصطلاحاً تنگهٔ برنامه نامیده می‌شود. این ابزار را می‌توان به دو صورت فراخوانی و استفاده نمود. راه اول استفاده از دستور profile در خط فرمان MATLAB می‌باشد و راه دیگر این است که در قسمت Desktop در صفحهٔ اصلی MATLAB گزینهٔ profile را انتخاب کنیم. این ابزار به شما اجازه می‌دهد تشخیص دهید که کدام قسمت از برنامه وقت بیشتری از پردازش را به خود اختصاص داده است.

تصاویر بالا گزارش ابزار profiler را در مورد یک برنامه تخمین حرکت نشان می‌دهد. در این برنامه از الگوریتم تطبیق بلوک استفاده شده است. با مطالعهٔ گزارش بالا می‌توان به سرعت پی برد که اکثر زمان اجرا به تابع costFunctionMAD اختصاص یافته است. قسمت محاسبهٔ میانگین اختلاف مطلق بلوک‌ها مهم‌ترین عامل وقت گیر در داخل این تابع است.
هنگامی که تنگه‌های برنامه را مشخص کردیم، می‌توانیم روش‌های زیر را به منظور بهبود عملکرد MATLAB به کار بگیریم.

۱- پیش تعریف آرایه‌ها
۲- بردارسازی برنامه
۳- کاربرد فایل MEX تفسیر شده

این روش‌ها تنها برای برنامه‌هایی که شما نوشته‌اید کاربرد دارند. برای سریع کردن اجرای توابع داخلی و توکار MATLAB همانند filter و fft راه حل کلی وجود ندارد و در واقع این توابع به خوبی بهینه شده‌اند.

پیش تعریف آرایه‌ها:
هنگامی که آرایه‌ها در داخل حلقه می‌آیند. زمان اضافی برای تخصیص حافظه و کپی کردن اطلاعات تلف می‌شود. بطور کلی می‌توانیم توسط عمل اختصاص اولیهٔ حافظه این زمان را کاهش دهیم. بدین منظور باید قبل از حلقه‌ها، توابع zeros را فراخوانی نمود. همچنین می‌توان با استفاده از تابع struct به همراه تابع repmat، آرایه‌های ساختاری را به برنامه اضافه نمود.