У меня есть программа на C#, которая должна читать от десятков до сотен миллионов записей из плоского текстового файла. Существует ли значительный прирост производительности при использовании вызова ap/invoke для неуправляемой dll dll C/C++, которая обрабатывает весь входной файл в отдельном потоке, или это незначительный прирост производительности, так что было бы лучше просто обработать мой файл IO в C#?C# I/O vs C I/O
ответ
Вероятно, не существует значительного увеличения производительности при использовании dll C/C++. C# работает в среде с довольно эффективным JIT-компилятором, поэтому я предполагаю, что производительность кода ограничена скоростью чтения жесткого диска около 100 МБ/с. Конечно, если у вас SSD, ваш пробег может отличаться.
Обратите внимание, что если одна запись является, например, 1000 байтов, и вы читаете 100 миллионов записей, что означает 100 гигабайт. Чтение занимает 1000 секунд, т. Е. Более 15 минут, из-за низкой скорости жесткого диска.
Поскольку величина разности между связанным кодом процессора и привязкой IO требует, чтобы вы сохраняли количество времени, которое вы сохранили, написав код на нативном C, составляют доли процента выгоды.
Единственный раз, когда вы увидите преимущества наличия отдельных встроенных функций, это то, что выполняемые фактические инструкции являются узким местом. Например, хруст большого количества чисел в ОЗУ или вычисления пикселей для 3D-графики.
Это вряд ли стоит потратить ваше время, чтобы попытаться его использовать при работе с IO.
- 1. Java Line IO vs C++ IO?
- 2. C# IO Exception
- 3. C++ unicode-файл io
- 4. C compile IO error
- 5. C# Linq Dictionary IO
- 6. C# Shell - перенаправление IO
- 7. C++: как оптимизировать IO?
- 8. Оптимизация файла C# IO
- 9. Символ IO в C
- 10. сжатый файл IO в C++
- 11. C# parallel IO Completion Ports
- 12. IO читает для файла C#
- 13. C++ io streams versus mmap
- 14. Сложный текстовый файл C++ IO
- 15. C# Многопоточный файл IO (чтение)
- 16. Асинхронный IO в C++ 11
- 17. Базовый файл IO в C
- 18. C++ IO с жестким диском
- 19. Ошибка кастинга, программа IO C
- 20. C# - Исключение класса журнала IO
- 21. C++ Streams против C-style IO?
- 22. System :: IO :: Каталог :: GetDirectories ("C: против C: \\")
- 23. Библиотека C/C++ для VTK IO
- 24. IO в стандарте C и C POSIX
- 25. Файл IO трюки с использованием c/C++
- 26. C# SerialPort io исключение доступ запрещен
- 27. Окна с перекрытием IO vs IO в отдельном потоке
- 28. Функция усреднения Haskell IO IO, чистая vs неуловимая попытка
- 29. Sanselan vs Java-Image-io
- 30. IO String и IO Data
No .............. – EZI
«[Если у вас есть две лошади, и вы хотите знать, какая из них быстрее, чем расы ваших лошадей.] (Http: // ericlippert .com/2012/12/17/performance-rant /) « – Filburt
@ Филбурт, если у вас две лошади, очень медленные, тогда не важно, кто жокей – EZI