• Обработка больших объемов данных в памяти на C#

    Хочу поделиться недавно приобретенным в C# опытом по загрузке и обработке в памяти больших объемов данных. Все нижеуказанное касается Visual Studio 2008 и .Net Framework 3.5.1, на случай каких-либо отличий в других версиях языка или библиотек.

    Итак, у нас возникли следующие задачи:
    1. Расположить в памяти до 100 миллионов записей, состоящих из строки, длиной 16 символов (уникальный ключ) и двух целочисленных значений, длиной 4 байта каждый;
    2. Быстро находить и редактировать запись по ключу.

    Читать дальше →
  • Про релевантность опыта. История с моралью

      Хочу рассказать поучительную историю.
      Работает со мной мужик, который сразу после университета пришел в нашу компанию.
      Сначала это был небольшой израильский стартап, потом его купила большая американская компания.
      Мужик в фирме рос, руководил отделом. Так прошло 12 лет и мужик решил менять место работы.
      И вдруг оказалось, что он никому не нужен.
      Почему?
      Дело в том, что в нашей фирме придумали свой язык, объектно ориентированный. И даже сделали его стандартом (IEEE) в области тестирования дизайна чипов.
      Язык оказался удачным и на нём начали писать свой софт.
      Так вот этот мужик, почти всё время, эти 12 лет, писал на этом нашем языке. (Кроме этого — на C++ и Perl, но немного.)
      Читать дальше →
    • Совет 23. Рассмотрите возможность замены ассоциативных контейнеров сортированными векторами

        “Даже если гарантированное логарифмическое время поиска вас устраивает, стандартные ассоциативные контейнеры не всегда являются лучшим выбором. Как ни странно, стандартные ассоциативные контейнеры по быстродействию нередко уступают банальному контейнеру vector” — C. Мейерс «Эффективное использование STL».
        Многих возможно интересует практическая сторона этого совета, насколько же в действительности сортированный vector может быть быстрее ассоциативных контейнеров. Меня тоже интересовал данный вопрос и я решил провести небольшой тест и нарисовать пару графиков чтобы все встало на свои места.
        Читать дальше →