private IEnumerable <SequenceAndOffset> SequencesWithOffsetNoCleavage() { List <byte> buf = null; var curOffset = 0L; var offset = -1L; foreach (var residue in FastaDatabase.Characters()) { ++offset; if (residue == FastaDatabaseConstants.Delimiter) { if (buf != null && buf.Count > 0) { yield return(new SequenceAndOffset(buf.ToArray(), curOffset)); } //if (buf != null && buf.Count > 0) yield return new SequenceAndOffset(Encoding.GetString(buf.ToArray()), curOffset); buf = new List <byte>(); curOffset = offset; } else { if (buf != null) { buf.Add(residue); } } } }
public void TestSequenceEnumerationParallel2() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); var sw = new System.Diagnostics.Stopwatch(); const string dbFile = @"\\proto-2\UnitTest_Files\InformedProteomics_TestFiles\MSPathFinderT\ID_002216_235ACCEA.fasta"; var db = new FastaDatabase(dbFile); db.Read(); var indexedDb = new IndexedDatabase(db); var arr = db.Characters().ToArray(); sw.Start(); //var annotationsAndOffsets = indexedDb.AnnotationsAndOffsetsNoEnzyme(7, 30); // var num = annotationsAndOffsets.AsParallel().LongCount(annotationsAndOffset => annotationsAndOffset.Annotation.IndexOf('W') >= 0); //var num = annotationsAndOffsets.LongCount(annotationsAndOffset => annotationsAndOffset.Annotation.IndexOf('W') >= 0); //var num = arr.AsParallel().Where(c => c == 'W').LongCount(); var num = 0; var sum = 0L; //foreach (var c in arr) for (var a = 0; a < arr.Length; a++) { var c = arr[a]; for (var i = 0; i < c * 10000; i++) sum += i; // Interlocked.Increment(ref num); if (++num == 1000) break; } Console.WriteLine("NumPeptides: {0}", sum); sw.Stop(); Console.WriteLine(@"{0:f4} sec", sw.Elapsed.TotalSeconds); }
public void TestSumParallel() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); //var array = Enumerable.Range(0, short.MaxValue).ToArray(); const string dbFile = @"\\proto-2\UnitTest_Files\InformedProteomics_TestFiles\MSPathFinderT\ID_002216_235ACCEA.fasta"; var db = new FastaDatabase(dbFile); db.Read(); //var indexedDb = new IndexedDatabase(db); //indexedDb.Read(); //var peptides = indexedDb.AnnotationsAndOffsetsNoEnzyme(7, 30); var charArray = db.Characters().Select(c => (int)c); // Test methods. Console.WriteLine(SumAsParallel(charArray)); Console.WriteLine(SumDefault(charArray)); const int m = 100; var s1 = Stopwatch.StartNew(); for (var i = 0; i < m; i++) { SumDefault(charArray); } s1.Stop(); var s2 = Stopwatch.StartNew(); for (var i = 0; i < m; i++) { SumAsParallel(charArray); } s2.Stop(); Console.WriteLine((s1.Elapsed.TotalMilliseconds * 1000000 / m).ToString("0.00 ns")); Console.WriteLine((s2.Elapsed.TotalMilliseconds * 1000000 / m).ToString("0.00 ns")); Console.Read(); }