Jak mówi tytuł, w porównaniu do normalnej funkcji, czy istnieje perfekcja w wywoływaniu funkcji DLL? Plik dll zostanie załadowany przez dlopen
. EDYTOWANIE: Ignoruj dlsym
czas, ponieważ robię to tylko raz dla każdej funkcji.Czy istnieje perf perf, używając funkcji DLL?
Odpowiedz
wywołań funkcji DLL są pośrednie przez adres i kompilator nie może ich inline, więc istnieje niewielkie uderzenie wydajność.
Powinieneś się tylko martwić, jeśli użyjesz ich w wewnętrznej pętli krytycznej i po profilowaniu.
Ok. Profil to zrobię! :RE – nakiya
Tak, jest wydajność. Wykonujesz wywołanie dlsym, aby uzyskać adres funkcji, a następnie wywołujesz funkcję o tym adresie. Ponieważ istnieje dodatkowe wywołanie dlsym w porównaniu do wywołania funkcji z tego samego modułu, musi być wolniejsze. Ile to ma znaczenie? To zależy. Jedyny pewny sposób, by wiedzieć, to zmierzyć to.
Masz rację. Ale w moim przypadku robię tylko 'dlsym' raz na całe życie programu dla każdej funkcji. I dodatkowo używam wskaźników funkcyjnych do wywoływania funkcji. A co wtedy? – nakiya
@nakiya W takim przypadku tracisz tylko możliwości optymalizacji, które miałbyś w przeciwnym razie, gdyby wywoływana funkcja była połączona statycznie, tj. Inlining, optymalizacja między-procesowa, stała propagacja i tym podobne. Innymi słowy, nie różni się to od wywoływania funkcji tego samego modułu za pomocą wskaźnika funkcji. – usta
Najlepszym sposobem, aby dowiedzieć się, jest po prostu do mierzenia ...
- 1. Perf pokazuje zniekształcone nazwy funkcji
- 2. Oprofile vs perf
- 3. Interpretacja wyjściu perf stat
- 4. Jak używać narzędzi Google perf
- 5. perf enable demangling of callgraph
- 6. stosu wywołań w profilera perf
- 7. Zrozumieć reakcję natywnego monitora Perf
- 8. Opis perf, wyświetl tylko kod źródłowy
- 9. Czy przestrzeń użytkownika profilu blokowania perf zablokuje się?
- 10. perf stat daje inną liczbę instrukcji dla każdego biegu
- 11. Dlaczego perf nie zgłasza błędów w pamięci podręcznej?
- 12. Czy istnieje jakakolwiek przeglądarka funkcji eksportu natywnego DLL?
- 13. Powody, dla których widzimy wysoki "% czasu w GC" w Perf Mon
- 14. Dlaczego Perf i Papi podają różne wartości odniesień do pamięci podręcznej L3 i chybiają?
- 15. Czy istnieje jakaś koncepcja DLL lub DLL w Androidzie?
- 16. sprawdzić, czy element istnieje używając enable_if
- 17. Sprawdź, czy katalog istnieje w ~/używając Perla
- 18. Sprawdź, czy plik istnieje, używając symbolu wieloznacznego:
- 19. Reading .doc plik używając DocumentFormat.OpenXml dll
- 20. Wywołanie funkcji DLL z Python
- 21. Win32 API do wyliczenia funkcji eksportowania dll?
- 22. Czy istnieje sposób kompilacji kodu Java do biblioteki DLL?
- 23. Czy istnieje odpowiednik "AssemblyInfo.cs" w projekcie Win32 DLL?
- 24. Czy istnieje odpowiednik Java funkcji http_build_query PHP?
- 25. Czy istnieje rozszerzona biblioteka funkcji dla SQLite?
- 26. Czy istnieje nazwa tej funkcji lub wzorca?
- 27. Czy istnieje sposób na wstawienie funkcji rekursywnej?
- 28. Czy istnieje samodzielna implementacja funkcji std ::?
- 29. Czy istnieje odpowiednik funkcji SQL Server NewId()?
- 30. Czy istnieje możliwość zamiany (monkeypatch) funkcji PHP?
nie nazwać go DLL pod linux. Jest to obiekt wspólny. Załadowanie obiektu współużytkowanego zajmuje trochę więcej czasu, jednak po jego załadowaniu nie powinno to odbiegać od normalnych funkcji. – Vinzenz