green_fr (green_fr) wrote,
green_fr
green_fr

Category:

MatLab classes overhead

Пытаемся причесать немного нашу программу на MatLab’е, группируем написанные разными людьми скрипты в классы.
И вдруг замечаю, что функция, оформленная в виде метода, исполняется в разы медленнее... Один и тот же код (copy-paste), только данные не в глобальных переменных, а члены класса.

Позвонил в support, они мне говорят, что это не баг, это фича: доступ к переменным объекта занимает слегка больше времени, чем доступ к простым переменным. Пообещали передать разработчикам, но, судя по внутренней базе, разработчики не считают это поведение анормальным.

Оказалось, MatLab не помнит результатов проверок, которые он проводил только что. Например, в методе класса есть цикл, в цикле мы обращаемся к переменной класса (мой случай — к статической константе!). Так вот, он на каждой итерации будет проверять, существует ли такая переменная, не переопределена ли она дочерними классами, и какой у неё уровень доступа.

Написал «патч»: в начале каждого метода считываю константы в локальные переменные.
Одна из функций разогналась с 42 секунд до полутора.
Послал предложение усовершенствования в MathWorks, может премию вышлют :-)
Tags: matlab, rabota
Subscribe

  • Новинки опечаток

    Я очень люблю рассматривать опечатки и пытаться понять, откуда они взялись — где-то кнопки рядом на клавиатуре, где-то транслит заглючил, где-то…

  • Влияние COVID на смертность

    В Institut des Actuaires сделали доклад на эту тему, как можно было не послушать? :-) В двух словах, человек пытается показать, что смертность…

  • Осенний ковид

    На работе пошла постепенно обратная тенденция. Домой ещё не выталкивают, но изначальный настрой «скоро свернём карантин» пропал. Ещё летом, когда нас…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 15 comments

  • Новинки опечаток

    Я очень люблю рассматривать опечатки и пытаться понять, откуда они взялись — где-то кнопки рядом на клавиатуре, где-то транслит заглючил, где-то…

  • Влияние COVID на смертность

    В Institut des Actuaires сделали доклад на эту тему, как можно было не послушать? :-) В двух словах, человек пытается показать, что смертность…

  • Осенний ковид

    На работе пошла постепенно обратная тенденция. Домой ещё не выталкивают, но изначальный настрой «скоро свернём карантин» пропал. Ещё летом, когда нас…