Вам дан код JPEG подобного сжатия (проект JPEG), вам нужно максимально, насколько это возможно, оптимизировать его, в том числе уменьшить потребление памяти.
Рекомендации:
- Профилируйте код (используйте dotTrace)
- Для начала оптимизируйте загрузку изображений и переписывайте только неэффективный код
- Пишите бенчмарки
- Не бойтесь математики
С разными вопросами можно писать @Golrans
Подсказки:
- Распаралельте DCT
- CbCr subsampling
- Используйте указатели, вместо GetPixel/SetPixel, придётся написать unsafe код
- Замените DCT на FFT (System.Numerics.Complex), нельзя использовать библиотеки, только собственная реализация!
- Помимо подсказанного в проекте ещё много узких мест (╯°□°)╯︵ ┻━┻
В качестве допа, можете найти проблему в проектах /debugging/tasks/managed/MemoryLeakStatic и /debugging/tasks/managed/MemoryLeakFinalizers
Решением задачки будет считаться ваш рассказ (с конкретной последовательностью команд, можно даже скрипт) о том, как в проекте можно найти утечку памяти используя только windbg
Из новых команд вам пригодятся !mroot !gcroot !dumpheap !finalizerqueue
С разными вопросами можно писать @rkhapov
https://docs.google.com/presentation/d/1vSv8IpNCa5S2WKANGve5PsblWyX9l3RDBJn_VUtQo9k/edit?usp=sharing