2012-12-18 16 views
5

C++ kodumdan MATLAB'de yazılan bir DLL'yi arıyorum. Garip bir etki gözlemliyorum: ilk arama, sonraki aramaların daha uzun sürmesi demektir. 3-4 kat daha fazla sürer. Normal mi? Onunla bir şey yapmak mümkün mü?Matlab DLL'sine yapılan ilk çağrı neden sonraki aramalardan daha uzun sürüyor?

+0

Aramaları C++ kodunuzda nasıl yapıyorsunuz? –

+3

Mükemmel bir soru. Muhtemelen Matlab dışı kullanıcılar yanlış anlaşılma nedeniyle kapattılar. –

+0

Anlamadan kurtulmanın tek yolu, Matlab kodunu [Matlab Coder] (http://www.mathworks.com.au/products/matlab-coder/index.html) kullanarak C veya C++ koduna dönüştürmektir. daha sonra oradan derleyin. @NominSim'in işaret ettiği gibi, "derlenmiş" Matlab kodu aslında derlenmiyor - bu konu hakkında iyi bir cevap var [burada] (http://stackoverflow.com/questions/8636267/matlab-code-after-compilation) –

cevap

3

Bu normaldir, gecikme MATLAB Runtime Compiler'un başlatılmasıyla gelir. MATLAB kodunu MATLAB aracılığıyla oluşturduğunuz dll'den çalıştırdığınız budur. İlk başlangıçta AFAIK önlenemez, ancak daha sonra "maliyet" den kaçınmak için uygulama başladığında DLL için bir kukla çağrı ekleyebilirsiniz.

+1

Soru kilitlendiğinden, bunu bir yorum olarak ekleyeceğim. İki tür gecikme vardır - ilk kez uygulamanızı ilk kez * bu bilgisayarda * çalıştırdığınızda, ZIP dosyası çıkarılır ve MCR başlatılır. İkinci tür, bu uygulamayı bir kez çalıştırdığınız zamandır. Daha sonra sadece MCR yüklenir. –

+0

Matlab Runtime Compiler'i başlatmanın gecikmesi mclInitializeApplication veya Initialize() öğelerini çağırmak için bir yerdeydi. – user1913557

+0

Birkaç DLL dosyasında birkaç MATLAB işlevine sahip olsaydım, bu tür bir gecikme her işlevin ilk çağrısında olur mu? – user1913557

İlgili konular