Bu garip bir soru gibi gelebilir, ancak bölümümde aşağıdaki durumla ilgili sorun yaşıyoruz:
Burada, daha büyük ve daha da büyüyen bir sunucu uygulaması üzerinde çalışıyoruz, hatta farklı parçalara bölmeyi düşündüğümüz noktada (DLL dosyaları), gerektiğinde dinamik olarak yükleme ve daha sonra boşaltma işlemleri yapabilmek için performans sorunları.
Ancak, kullandığımız fonksiyonlar, giriş ve çıkış parametrelerini STL nesneleri olarak geçiyor ve Yığın Taşması cevabında da belirtildiği gibi , bu çok kötü bir fikir. (Yazı bazı ± çözümler ve kesmeler içeriyor, ancak hepsi çok sağlam görünmüyor.)
Açıkçası giriş / çıkış parametrelerini standart C ++ tipleriyle değiştirebilir ve bir kez fonksiyonların içindekilerden STL nesneleri yaratabiliriz, ancak bu performans düşmelerine neden olabilir.
Tek bir bilgisayarın artık kaldıramayacağı kadar büyük bir uygulama geliştirmeyi planlıyorsanız, STL'yi hiç bir teknoloji olarak kullanmamanız gerektiğine karar vermek doğru mudur?
Bu soru hakkında daha fazla bilgi:
Soruyla ilgili bazı yanlış anlamalar var gibi görünüyor: sorun şu:
Uygulamam çalışmasını tamamlamak için büyük miktarda performans (CPU, bellek) kullanıyor ve bu çalışmayı bölmek istiyorum farklı parçalara (program zaten çoklu fonksiyonlara bölündüğü için), uygulamalarımdan bazı DLL'ler oluşturmak ve bu işlevlerin bazılarını bu DLL'lerin dışa aktarma tablosuna koymak zor değildir. Bu, aşağıdaki durumla sonuçlanacaktır:
+-----------+-----------+----
| Machine1 | Machine2 | ...
| App_Inst1 | App_Inst2 | ...
| | |
| DLL1.1 | DLL2.1 | ...
| DLL1.2 | DLL2.2 | ...
| DLL1.x | DLL2.x | ...
+-----------+-----------+----
App_Inst1, Machine1'de yüklü olan uygulamanın bir örneğidir; App_Inst2, Machine2'ye yüklenen aynı uygulamanın bir örneğidir.
DLL1.x, Machine1'de yüklü bir DLL iken, DLL2.x, Machine2'de yüklü bir DLL'dir.
DLLx.1 verilen işlevi1 kapsar.
DLLx.2 verilen işlevi2 kapsar.
Şimdi Makine1'de, işlev1 ve işlev2'yi çalıştırmak istiyorum. Bunun Machine1'i aşırı yükleyeceğini biliyorum, bu nedenle App_Inst2'ye bir mesaj göndermek istiyorum, bu uygulama örneğinden function2 işlemini yapmasını istiyorum.
Function1 ve function2'nin girdi / çıktı parametreleri STL (C ++ Standart Tür Kitaplığı) nesneleridir ve müşteriden App_Inst1, App_Inst2, DLLx.y güncellemelerini yapmasını bekleyebilirim (ancak hepsi değil, müşteri Machine1'i yükseltebilir, ancak Machine2 değil, veya yalnızca uygulamaları yükseltin, ancak dll'leri veya tam tersi, ...). Açıkça görüldüğü gibi, arayüz (giriş / çıkış parametreleri) değişirse, müşteri tam yükseltme yapmak zorunda kalır.
Bununla birlikte, belirtilen StackOverflow URL'sinde belirtildiği gibi, App_Inst1 veya DLL'lerden birinin basit bir yeniden derlemesi tüm sistemin parçalanmasına neden olabilir, bu nedenle STL (C ++ Standart Şablonu) kullanılmasını önererek bu yazının orjinal başlığım Kütüphane) büyük uygulamalar için.
Umarım bazı soruları / şüpheleri gidermişimdir.