Wiem, że dość często słyszałem, że C zazwyczaj ma przewagę wydajności nad C ++. Tak naprawdę nie myślałem o niczym innym, dopóki nie zdałem sobie sprawy, że MSVC wydaje się nawet nie obsługiwać najnowszego standardu C, ale najnowszy obsługuje C99 (o ile mi wiadomo).
Planowałem napisać bibliotekę z kodem do renderowania w OpenGL, aby móc go ponownie użyć. Planowałem napisać bibliotekę w C, ponieważ wzrost wydajności jest mile widziany, jeśli chodzi o grafikę.
Ale czy naprawdę byłoby warto? Kod korzystający z biblioteki prawdopodobnie zostałby napisany w C ++, a ja wolę kodować ogólnie w C ++.
Jeśli jednak spowodowałoby to nawet niewielką różnicę w wydajności, prawdopodobnie wybrałbym C.
Można również zauważyć, że ta biblioteka byłaby czymś, co zrobiłbym do pracy w systemie Windows / OS X / Linux i prawdopodobnie skompilowałbym wszystko natywnie (MSVC dla Windows, Clang lub GCC dla OS X i GCC dla Linux .. . lub ewentualnie kompilatory Intela do wszystkiego).
Rozejrzałem się i znalazłem pewne testy porównawcze i takie, ale wszystko, co widziałem, dotyczyło GCC, a nie MSVC i Clanga. Ponadto testy porównawcze nie wspominają o standardach używanych języków. Ktoś ma jakieś przemyślenia na ten temat?
EDYTOWAĆ:Chciałem po prostu podzielić się moim poglądem na to pytanie po kilku latach doświadczenia. W końcu napisałem projekt, o który zadawałem to pytanie w C ++. Rozpocząłem inny projekt mniej więcej w tym samym czasie w C, ponieważ chcieliśmy uzyskać jak najmniejszą wydajność, którą mogliśmy i potrzebowaliśmy, aby projekt był możliwy do połączenia w C. Kilka miesięcy temu dotarłem do punktu, w którym naprawdę potrzebowałem map i zaawansowanych manipulacja sznurkiem. Wiedziałem o możliwościach tego w standardowej bibliotece C ++ i ostatecznie doszedłem do wniosku, że te struktury w standardowej bibliotece prawdopodobnie przewyższą i będą bardziej stabilne niż mapy i łańcuchy, które mógłbym zaimplementować w C w rozsądnym czasie. Wymóg bycia linkowalnym w C został łatwo spełniony przez napisanie interfejsu C do kodu C ++, co zostało zrobione szybko z nieprzezroczystymi typami. Przepisywanie biblioteki w C ++ wydawało się przebiegać znacznie szybciej niż podczas pisania w C i było mniej podatne na błędy, zwłaszcza wycieki pamięci. Byłem także w stanie korzystać ze standardowej biblioteki wątków bibliotecznych, co było znacznie łatwiejsze niż stosowanie specyficznych dla platformy implementacji. Ostatecznie uważam, że napisanie biblioteki w C ++ przyniosło ogromne korzyści przy możliwie niskim koszcie wydajności. Nie przetestowałem jeszcze wersji C ++, ale wierzę, że może być nawet możliwe, że osiągnąłem pewną wydajność, używając standardowych struktur danych biblioteki niż te, które napisałem. Wierzę, że pisanie biblioteki w C ++ przyniosło ogromne korzyści przy możliwie niskim koszcie wydajności. Nie przetestowałem jeszcze wersji C ++, ale wierzę, że może być nawet możliwe, że osiągnąłem pewną wydajność, używając standardowych struktur danych biblioteki niż te, które napisałem. Wierzę, że pisanie biblioteki w C ++ przyniosło ogromne korzyści przy możliwie niskim koszcie wydajności. Nie przetestowałem jeszcze wersji C ++, ale wierzę, że może być nawet możliwe, że osiągnąłem pewną wydajność, używając standardowych struktur danych biblioteki niż te, które napisałem.