Производительность при запуске приложения.
Быстрый запуск клиентского приложения позволяет вызвать первые положительные впечатления у пользователя или потенциального клиента, опробующего демонстрационную версию продукта. Однако,…
Быстрый запуск клиентского приложения позволяет вызвать первые положительные впечатления у пользователя или потенциального клиента, опробующего демонстрационную версию продукта. Однако,…
В предыдущих статьях нам уже довелось убедиться, насколько важны оптимизации, выполняемые JIT-компилятором. В частности, мы довольно подробно рассмотрели встраивание…
При хранении большого объема данных, например информации об индексировании веб-страниц в поисковой системе, сжатие данных с целью экономии дискового…
При знакомстве с алгоритмами аппроксимации мы все еще были связаны требованием предоставить детерминированное (определенное) решение. Однако в некоторых случаях…
В этой статье рассматриваются два алгоритма, которые дают хоть и приближенное, но достаточно точное решение задачи. Алгоритм, который при…
Мемоизация – это прием сохранения промежуточных результатов, которые могут еще раз понадобиться в ближайшее время, чтобы избежать их повторного…
Основу некоторых приложений составляют специализированные алгоритмы решения задач той или иной предметной области и на основе допущений, не являющихся…
C++/CLI – это набор расширений языка C++, позволяющий создавать гибридные управляемые и низкоуровневые библиотеки DLL. С применением расширений C++/CLI…
Объектная модель программных компонентов (Component Object Model, COM) проектировалась с целью дать возможность создавать компоненты на любом языке/платформе, обладающем…
Механизм Platform Invoke, более известный как P/Invoke, позволяет вызывать из управляемого кода функции в стиле языка C, экспортируемые библиотеками…
Лишь немногие приложения состоят исключительно из управляемого кода. В действительности большинство приложений используют собственные или сторонние библиотеки, реализованные на…
Фреймворк Windows Communication Foundation (WCF), появившийся в версии .NET 3.0, быстро стал стандартом де-факто организации сетевых взаимодействий в приложениях…
Сериализация (serialization) – это операция преобразования объекта в формат, пригодный для записи на диск или отправки в сеть. Десериализация…
Доступ к сети является одной из фундаментальных особенностью современных приложений. Серверные приложения, обрабатывающие запросы от клиентов, стремятся максимально увеличить…
Большая часть предыдущих статей посвящена вопросам оптимизации производительности вычислений. Мы видели множество примеров настройки процедуры сборки мусора, распараллеливания циклов…
До сих пор в обсуждении приемов параллельного программирования мы рассматривали только ядра процессора. Мы приобрели некоторые навыки распараллеливания программ…
Занимаясь проблемами параллельного программирования нельзя не упомянуть хотя бы вскользь тему синхронизации. В простых примерах ранее мы не раз…
Парадигма параллелизма задач, рассмотренная ранее, в первую очередь относится к задачам. Основной целью парадигмы параллелизма данных является полное устранение…
Параллелизм задач – это парадигма и набор API для разделения больших задач на более мелкие, и выполнение их с…
Вначале были потоки. Потоки – это наиболее элементарные средства распараллеливания и асинхронного выполнения заданий; они являются самой низкоуровневой абстракцией,…