2015-09-28 6 views
1

У меня возникла странная проблема при компиляции одного из моих приложений с помощью mcc-компилятора, развернутого с R2015b, поворот 3D-представлений (то есть с помощью кнопки rotate3D на панели инструментов) сейчас чрезвычайно медленный, не в случае компиляции точно такого же кода с R2013b. При запуске приложения либо в R2013b, либо в R2015b environements вращение в обоих случаях является действительно жидким/гладким.3D-ротация медленная при компиляции с помощью mcc R2015b

я попробовал гораздо более простой код, эквивалентный 3D у меня есть в моем приложении:

function [] = TestCompiledRotationR2015b() 
%[ 
    % Create random data 
    azimuths = linspace(0, 359, 360) * pi/180; 
    elevations = linspace(0, 180, 181) * pi/180; 
    [A, E] = ndgrid(azimuths, elevations); 
    Data = sin(7*(E-pi/2))./(7*(E-pi/2)); 
    Data(isnan(Data)) = 1; 
    Data = Data .* abs(cos(0.5*A)); 

    ff = figure(42); 
    X = cos(A) .* sin(E); 
    Y = sin(A) .* sin(E); 
    Z = cos(E); 
    surf(X, Y, Z, abs(Data)); 

    % Set axes properties 
    shading flat; 
    set(gca, 'DataAspectRatio', [1 1 1]); 
    set(gca, 'Visible', 'off'); 
    xlim([-1 1]); 
    ylim([-1 1]); 
    zlim([-1 1]); 

    uiwait(ff); 
%] 

Я также попытался с более сложным (с использованием GUI макет панели и карт, которые я использую много в моем приложении). ... Я записал данные «renderer» на всякий случай (оба opengl полностью аппаратно ускорены в скомпилированных и не скомпилированных режимах) ... но не удалось воспроизвести медленное вращение, которое у меня есть в моем скомпилированном приложении.

Итак, мне просто интересно, если кто-нибудь из вас экспериментирует с той же проблемой (3D медленнее только при компиляции с R2015b и только для некоторых приложений) ... Я думаю, что что-то не так, что я делаю, но почему это работал в R2013b и почему он все еще в норме в среде R2015b (т. е. не скомпилирован ... только скомпилированный R2015b вызывает проблему) является полной загадкой.

** Редактирование **

Я попытался активировать профилировщик при перемещении мышей в течение примерно 1 минуты для обоего составленных и не компилируются режимов, ничего особенного, кроме освежающей скорости, которая резко сокращаться в скомпилированном режиме (~ 160 вызовов в скомпилирован режима по сравнению с 4100 вызовов в режиме среды)

Profiler

ответ

1

Ok, после многих испытаний, все это кажется, что проблема связана с тем, что я бегом кода MatLab из C# приложения, предназначенное для использование в системном лотке:

Все следующие тесты в порядке:

  • Создать исполняемый файл непосредственно с mcc -m TestLaunchMyApplication.m
  • Создание csharedlib и вызова из основного основного кода с
  • Создание csharedlib и вызова его из основной C# WinForm приложение

Только вызов csharedlib из системного трея C# app вызывает проблему. Я пробовал разрабатывать гораздо более простое приложение для системных лотков, и он отлично работает, так что это не чья-то ошибка, а моя, и мне нужно исправить вызов кода matlab (возможно, в неправильном потоке или неправильно настроен для получения событий мыши).

Вопрос закрыт.

+0

Подтверждено ... звонок в код Matlab не был включен в поток пользовательского интерфейса ... синхронизация решила проблему (хотя я не понимаю, почему проблема не была видна с R2013b ... в любом случае это было). – CitizenInsane

 Смежные вопросы

  • Нет связанных вопросов^_^