Я только начал использовать библиотеку protobuf для постоянного глобального кеширования некоторых дорогих запросов.Я храню его в текстовом поле в MSSQL и в мемо-поле в MSAccess и буду расширять его до Sqlite, поэтому я неохотно использую двоичное поле, если мне не нужно - я полагаю, что строковые манипуляции будут работать лучше cross dbчем двоичныйПохоже, что шаг ToBase64String отменяет различные преимущества protobuf (размер, скорость, использование памяти).
public void StoreInDb(T dataPoints, string parameters, string queryName)
{
//Store in cache
MemoryStream stream = new MemoryStream();
Serializer.Serialize(stream, dataPoints);
byte[] data = new byte[stream.Length];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(data, 0, data.Length);
string output = Convert.ToBase64String(data); //Meh, not pretty
using (CacheInsert inserter = new CacheInsert())
{
inserter.Insert(parameters, output, DateTime.Now.AddDays(1), queryName);
}
}
Есть предложения, как сделать это быстрее и дешевле?