Скорость обработки данных - C# (190401)

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста что можно использовать для высокой скорости обработки данных, акцесс меня честно говоря не очень устроил, он начал серьезно залипать на 10тыс записях в таблице, а мне нужно практически мгновенно получать ответ на запрос... Необходимые мне действия которые должны выполняться максимально быстро 1) проверка наличия записи в таблице 2) извлечение конкретных ячеек 3) ну и наконец добавление новых записей(хоть и не критично).

Решение задачи: «Скорость обработки данных»

textual
Листинг программы
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.IO;
  6. using System.IO.Compression;
  7. using System.Linq;
  8. using System.Runtime.Serialization;
  9. using System.Runtime.Serialization.Formatters.Binary;
  10.  
  11. namespace ConsoleApplication198
  12. {
  13.     internal class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             //проверяем наличие файла
  18.             var file = "c:\\DataItems.bin";
  19.             if (File.Exists(file))
  20.                 DB.Instance.Load(file);//загружаем данные
  21.             else
  22.             {
  23.                 //заполняем таблицу случайными данными
  24.                 var rnd = new Random(1);
  25.                 for(int i=0;i<10000;i++)
  26.                     DB.Instance.DataItems.Add(new DataItem(){Id1 = rnd.Next(400), Id2 = rnd.Next(400), Name = "Name" + i});
  27.             }
  28.             //проверяем наличие записи (99, 44), засекаем время доступа
  29.             var sw = Stopwatch.StartNew();
  30.             var exists = DB.Instance.DataItems.Contains(new DataItem() {Id1 = 99, Id2 = 44});
  31.             sw.Stop();
  32.             Console.WriteLine("Result: {0},  Search Time: {1}", exists, sw.Elapsed);
  33.             //сохраняем БД
  34.             DB.Instance.Save(file);
  35.             //
  36.             Console.ReadLine();
  37.         }
  38.     }
  39.  
  40.     [Serializable]
  41.     class DataItem
  42.     {
  43.         public int Id1 { get; set; }
  44.         public int Id2 { get; set; }
  45.         public string Name { get; set; }
  46.  
  47.         public override int GetHashCode()
  48.         {
  49.             return Id1 ^ Id2;
  50.         }
  51.  
  52.         public override bool Equals(object obj)
  53.         {
  54.             if(obj is DataItem)
  55.             {
  56.                 var item = obj as DataItem;
  57.                 return item.Id1 == Id1 && item.Id2 == Id2;
  58.             }
  59.  
  60.             return false;
  61.         }
  62.     }
  63.  
  64.     [Serializable]
  65.     class DataItems: HashSet<DataItem>
  66.     {
  67.         public DataItems()
  68.         {
  69.         }
  70.  
  71.         public DataItems(SerializationInfo info, StreamingContext context) : base(info, context)
  72.         {
  73.         }
  74.     }
  75.  
  76.     class DB
  77.     {
  78.         public readonly static DB Instance = new DB();
  79.         public DataItems DataItems { get; private set; }
  80.  
  81.         public DB()
  82.         {
  83.             DataItems = new DataItems();
  84.         }
  85.  
  86.         public void Load(string fileName)
  87.         {
  88.             using(var stream = File.OpenRead(fileName))
  89.             using(var zip = new GZipStream(stream, CompressionMode.Decompress))
  90.                 DataItems = (DataItems)new BinaryFormatter().Deserialize(zip);
  91.         }
  92.  
  93.         public void Save(string fileName)
  94.         {
  95.             using (var stream = File.OpenWrite(fileName))
  96.             using (var zip = new GZipStream(stream, CompressionMode.Compress))
  97.                 new BinaryFormatter().Serialize(zip, DataItems);
  98.         }
  99.     }
  100. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы