並列linqを使用してGetCompressionRatioへのwhere呼び出しを高速化したいのですが、すべてのPlinqステートメントの構文が異なり、linqを使用するのはこれが初めてです。並列出力を処理できませんが、できるだけ早くクエリを入力したいと思います。
static double GetCompressionRatio(string input)
{
if (string.IsNullOrEmpty(input))
throw new ArgumentNullException();
MemoryStream ms = new MemoryStream();
GZipStream gzip2 = new GZipStream(ms, CompressionMode.Compress, true);
byte[] raw = Encoding.UTF8.GetBytes(input);
gzip2.Write(raw, 0, raw.Length);
gzip2.Close();
byte[] zipped = ms.ToArray(); // as a BLOB
int startsize = raw.Length;
double percent = Convert.ToDouble(zipped.Length) / Convert.ToDouble(startsize);
return percent;
}
var query =
from sp1 in polar
...
from vp15 in polar
where GetCompressionRatio(sp1+...+vp15)>1.5
select sp1+...+vp15;
foreach (var element in query)
{
//output
}