private void LogFile(string fileName, string itemsName, ICounterFactory counterFactory) { var fullFileName = _directory + fileName + ".csv"; using (TextWriter tw = File.CreateText(fullFileName)) { bool isSimp = false; if (_allLoggedData.Count == 0) { return; } if (counterFactory.GetNewCounter(_allLoggedData[0]) is SimpCounter) { isSimp = true; } WriteHeadings(tw, itemsName, isSimp); var totalBefore = 0; var totalAfter = 0; var totalRemoved = 0; var totalSubexprsBefore = 0; var totalSubexprsAfter = 0; var totalNumItemsSimplified = 0; //var data = new List<Tuple<string, int, int, float, float, float>>(); foreach (var logData in _allLoggedData) { var counter = counterFactory.GetNewCounter(logData); var countBefore = counter.GetCountBefore(); if (countBefore == 0) { continue; } var countAfter = counter.GetCountAfter(); var countRemoved = counter.GetRemovedCount(); float removalPercentage = ((float)countRemoved / (float)countBefore) * 100; totalBefore += countBefore; totalAfter += countAfter; totalRemoved += countRemoved; tw.Write("{0},{1},{2},{3},{4}%", logData.OriginalProgram.Name, countBefore, countAfter, countRemoved, removalPercentage); if (!isSimp || countAfter == 0) { tw.WriteLine(); } else { var simpCounter = counter as SimpCounter; var numberOfItemsSimplified = simpCounter.GetNumberOfRemainingThatCanBeSimplified(); var subexprsBeforeSimplification = simpCounter.GetNumberOfSubexpressionsBeforeSimplification(); var subexprsAfterSimplification = simpCounter.GetNumberOfSubexpressionsAfterSimplification(); var subexprsRemoved = subexprsBeforeSimplification - subexprsAfterSimplification; totalNumItemsSimplified += numberOfItemsSimplified; totalSubexprsBefore += subexprsBeforeSimplification; totalSubexprsAfter += subexprsAfterSimplification; float subexprRemovedPercentage = ((float)subexprsRemoved / (float)subexprsBeforeSimplification) * 100f; float numberRemainingItemsSimplified = ((float)numberOfItemsSimplified / (float)countAfter) * 100f; tw.WriteLine(",{0},{1}%,{2},{3},{4},{5}%", numberOfItemsSimplified, numberRemainingItemsSimplified, subexprsBeforeSimplification, subexprsAfterSimplification, subexprsRemoved, subexprRemovedPercentage); } } tw.WriteLine(); float avgRemovalPct = ((float)totalRemoved / (float)totalBefore) * 100f; tw.Write("Total,{0},{1},{2},{3}%", totalBefore, totalAfter, totalRemoved, avgRemovalPct); if (!isSimp || totalAfter == 0) { tw.WriteLine(); } else { var subExprsRemoved = totalSubexprsBefore - totalSubexprsAfter; float subExprRemovalPct = ((float)subExprsRemoved / (float)totalSubexprsBefore) * 100f; float pctOfRemainingSimplified = ((float)totalNumItemsSimplified / (float)totalAfter) * 100f; tw.WriteLine(",{0},{1}%,{2},{3},{4},{5}%", totalNumItemsSimplified, pctOfRemainingSimplified, totalSubexprsBefore, totalSubexprsAfter, subExprsRemoved, subExprRemovalPct); } } }