Скорость обработки данных - C# (190401)
Формулировка задачи:
Подскажите пожалуйста что можно использовать для высокой скорости обработки данных, акцесс меня честно говоря не очень устроил, он начал серьезно залипать на 10тыс записях в таблице, а мне нужно практически мгновенно получать ответ на запрос...
Необходимые мне действия которые должны выполняться максимально быстро
1) проверка наличия записи в таблице
2) извлечение конкретных ячеек
3) ну и наконец добавление новых записей(хоть и не критично).
Решение задачи: «Скорость обработки данных»
textual
Листинг программы
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.IO.Compression; using System.Linq; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace ConsoleApplication198 { internal class Program { static void Main(string[] args) { //проверяем наличие файла var file = "c:\\DataItems.bin"; if (File.Exists(file)) DB.Instance.Load(file);//загружаем данные else { //заполняем таблицу случайными данными var rnd = new Random(1); for(int i=0;i<10000;i++) DB.Instance.DataItems.Add(new DataItem(){Id1 = rnd.Next(400), Id2 = rnd.Next(400), Name = "Name" + i}); } //проверяем наличие записи (99, 44), засекаем время доступа var sw = Stopwatch.StartNew(); var exists = DB.Instance.DataItems.Contains(new DataItem() {Id1 = 99, Id2 = 44}); sw.Stop(); Console.WriteLine("Result: {0}, Search Time: {1}", exists, sw.Elapsed); //сохраняем БД DB.Instance.Save(file); // Console.ReadLine(); } } [Serializable] class DataItem { public int Id1 { get; set; } public int Id2 { get; set; } public string Name { get; set; } public override int GetHashCode() { return Id1 ^ Id2; } public override bool Equals(object obj) { if(obj is DataItem) { var item = obj as DataItem; return item.Id1 == Id1 && item.Id2 == Id2; } return false; } } [Serializable] class DataItems: HashSet<DataItem> { public DataItems() { } public DataItems(SerializationInfo info, StreamingContext context) : base(info, context) { } } class DB { public readonly static DB Instance = new DB(); public DataItems DataItems { get; private set; } public DB() { DataItems = new DataItems(); } public void Load(string fileName) { using(var stream = File.OpenRead(fileName)) using(var zip = new GZipStream(stream, CompressionMode.Decompress)) DataItems = (DataItems)new BinaryFormatter().Deserialize(zip); } public void Save(string fileName) { using (var stream = File.OpenWrite(fileName)) using (var zip = new GZipStream(stream, CompressionMode.Compress)) new BinaryFormatter().Serialize(zip, DataItems); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д