الان که قسمت Expression ها ساخته شد با خودم گفتم چه خوبه که الان سرعت برنامه ها رو با هم مقایسه کنیم تا بتونم پردازش اعداد آ2 رو بهینه تر کنم.
یه تست خیلی ساده به این ترتیب که یه حلقه 1 میلیون عددی که داخلش یک متغیر رو 5 واحد زیاد می کرد، بین چند تا مفسر ترتیب دادم. نتایج زمان اجرا روی سیستم من به این شکل بود:
کد:
Java ~ 1ms
PHP ~ 150ms
Apadana Studio 2 ~ 1.1 sec
MMB ~ 14sec
Apadana 1 ~ 27sec
* نتایج برای آپادانا 1 و MMB به صورت دستی و بدون دخالت کامپیوتر محاسبه شده. (به دلیل طولانی بودن زمان)
این نتایج برام خیلی جالب و شگفت انگیز بود. همونطور که می بینید آپادانا 2 نسبت به ورژن 1 پیشرفت چشم گیری داشته و نسبت به MMB هم خیلی سریعتره. به جاوا فکر نمیکردم چون هر چی باشه طبیعیه که زبانی مثل php که تعریف نوع نداره و Casting ها رو اتوماتیک انجام میده سرعتش از جاوا کمتر باشه؛ اما توی این فکر بودم که چرا آ2 با این همه روشهایی که روش پیاده کردم از php کندتره.
این شد که اومدم ریشه یابی کردم و دیدم این کم بودن سرعت نسبت به php به خاطر روش ذخیره سازی متغیرهاست. با اینکه روش خوبیه ولی بازم کنده. ذخیره سازی رو حذف کردم دیدم زمان پردازش به حدود 300 میلی ثانیه رسید!! ولی باز هم دو برابر زمان php بود.
کدها رو بیشتر بررسی کردم و یه ایراد عجیب قریب دیدم که فراموش کرده بودم توی یه قسمت مهم روش کارم رو تغییر بدم. روش رو که تغییر دادم زمان محاسبه به 170 میلی ثانیه رسید که تقریبا با php برابره (چون php هم نوسان زمان زیاد داشت و 180 هم میشد). خوشحال شدم اما برای سریعتر کردن ذخیره سازی متغیرها باید بیشتر تلاش کنم برای همین ادامه ی کار رو واگذار کردم برای فردا که روی سرعت تفسیر و خود تفسیر بیشتر کار کنم. کد ذخیره رو که برگردوندم زمان محاسبه زیر 1 ثانیه شده بود (حدود 900 میلی ثانیه) که با همه ی این که می تونه بهتر بشه باز هم ناراضی نیستم چون این مقایسه حداقل به حال سرعت یه سودی داشت!
موفق و پیروز باشید