Tôi biết rằng tôi thường xuyên nghe nói rằng C thường có lợi thế về hiệu năng so với C ++. Tôi thực sự không nghĩ gì khác về nó cho đến khi tôi nhận ra rằng MSVC thậm chí dường như không hỗ trợ tiêu chuẩn C mới nhất, nhưng mới nhất là nó hỗ trợ C99 (theo như tôi biết).
Tôi đã lên kế hoạch viết một thư viện với một số mã để kết xuất trong OpenGL để tôi có thể sử dụng lại nó. Tôi đã dự định viết thư viện bằng C vì bất kỳ sự gia tăng hiệu suất nào đều được hoan nghênh khi nói đến đồ họa.
Nhưng nó sẽ thực sự có giá trị nó? Mã sử dụng thư viện có thể sẽ được viết bằng C ++ và tôi thích viết mã trong C ++ hơn.
Tuy nhiên, nếu nó tạo ra một sự khác biệt nhỏ trong hiệu suất, tôi có thể sẽ đi với C.
Cũng có thể lưu ý rằng thư viện này sẽ là thứ mà tôi sẽ làm để hoạt động trên Windows / OS X / Linux và tôi có thể sẽ biên dịch mọi thứ nguyên bản (MSVC cho Windows, Clang hoặc GCC cho OS X và GCC cho Linux .. .hoặc có thể là trình biên dịch của Intel cho mọi thứ).
Tôi đã nhìn xung quanh và tôi đã tìm thấy một số điểm chuẩn và như vậy, nhưng tất cả mọi thứ tôi thấy đã xử lý GCC thay vì MSVC và Clang. Ngoài ra, điểm chuẩn không đề cập đến các tiêu chuẩn của ngôn ngữ được sử dụng. Có ai có suy nghĩ nào về vấn đề này nữa ko?
CHỈNH SỬA:Tôi chỉ muốn chia sẻ quan điểm của mình về câu hỏi này sau một vài năm kinh nghiệm. Tôi đã kết thúc việc viết dự án mà tôi đã hỏi câu hỏi này trong C ++. Tôi đã bắt đầu một dự án khác cùng thời điểm tại C khi chúng tôi đang tìm cách đạt được bất kỳ hiệu suất nhỏ nào chúng tôi có thể và cần dự án có thể liên kết được trong C. Một vài tháng trước, tôi đã đạt đến điểm mà tôi thực sự cần bản đồ và nâng cao thao tác chuỗi. Tôi biết các khả năng này trong thư viện chuẩn C ++ và cuối cùng đi đến kết luận rằng các cấu trúc đó trong thư viện chuẩn có thể sẽ hoạt động tốt hơn và ổn định hơn các bản đồ và chuỗi tôi có thể thực hiện trong C trong một khoảng thời gian hợp lý. Yêu cầu có thể liên kết trong C dễ dàng được thỏa mãn bằng cách viết giao diện C sang mã C ++, được thực hiện nhanh chóng với các loại mờ. Viết lại thư viện trong C ++ dường như nhanh hơn nhiều so với khi viết nó bằng C và ít bị lỗi hơn, đặc biệt là rò rỉ bộ nhớ. Tôi cũng có thể sử dụng thư viện luồng thư viện tiêu chuẩn, việc này dễ dàng hơn nhiều so với việc sử dụng các triển khai dành riêng cho nền tảng. Cuối cùng, tôi tin rằng việc viết thư viện bằng C ++ đã mang lại lợi ích lớn với chi phí hiệu năng nhỏ. Tôi chưa điểm chuẩn phiên bản C ++, nhưng tôi tin rằng thậm chí có thể tôi đã đạt được một số hiệu suất bằng cách sử dụng các cấu trúc dữ liệu thư viện tiêu chuẩn so với các cấu trúc tôi đã viết. Tôi tin rằng việc viết thư viện bằng C ++ đã mang lại lợi ích lớn với chi phí hiệu năng nhỏ. Tôi chưa điểm chuẩn phiên bản C ++, nhưng tôi tin rằng thậm chí có thể tôi đã đạt được một số hiệu suất bằng cách sử dụng các cấu trúc dữ liệu thư viện tiêu chuẩn so với các cấu trúc tôi đã viết. Tôi tin rằng việc viết thư viện bằng C ++ đã mang lại lợi ích lớn với chi phí hiệu năng nhỏ. Tôi chưa điểm chuẩn phiên bản C ++, nhưng tôi tin rằng thậm chí có thể tôi đã đạt được một số hiệu suất bằng cách sử dụng các cấu trúc dữ liệu thư viện tiêu chuẩn so với các cấu trúc tôi đã viết.