Example #1
0
        public ICollection <T> ParseItems <T>(string header, IEnumerable <string> text) where T : class
        {
            var joined = string.Join(Environment.NewLine, new[] { header }.Union(text));

            using (var stream = new StringReader(joined))
            {
                var reader = new CsvHelper.CsvFactory().CreateReader(stream);
                reader.Configuration.Delimiter = ";";
                return(reader.GetRecords <T>().ToList());
            }
        }
        internal static string ToCsv(ICollection <IDictionary <string, string> > data, string delimiter = ",")
        {
            var factory = new CsvHelper.CsvFactory();

            using (StringWriter sw = new StringWriter())
                using (var writer = factory.CreateWriter(sw))
                {
                    writer.Configuration.Delimiter = delimiter;
                    foreach (var kvp in data.First())
                    {
                        writer.WriteField(typeof(string), kvp.Key);
                    }
                    foreach (var d in data)
                    {
                        writer.NextRecord();
                        foreach (var kvp in d)
                        {
                            writer.WriteField(typeof(string), kvp.Value);
                        }
                    }
                    writer.NextRecord();

                    return(sw.ToString());
                }

/*            var sb = new StringBuilder();
 *          bool firstheader = true;
 *          foreach (var kvp in data.First())
 *          {
 *              sb.AppendFormat(firstheader ? @"""{0}""" : @",""{0}""", kvp.Key);
 *              firstheader = false;
 *          }
 *          foreach (var d in data)
 *          {
 *              sb.AppendLine();
 *              bool first = true;
 *              foreach (var kvp in d)
 *              {
 *                  sb.AppendFormat(first ? @"""{0}""" : @",""{0}""", kvp.Value);
 *                  first = false;
 *              }
 *          }
 *          return sb.ToString();*/
        }
Example #3
0
        static void Main(string[] args)
        {
            // Load of type rubbish
            var movieProperties = typeof(Movie).GetProperties(BindingFlags.Public | BindingFlags.Instance);
            var inserted        = 0;
            var tStr            = typeof(string);
            var tInt            = typeof(int?);
            var tLong           = typeof(long?);
            var tDouble         = typeof(double?);

            // Open a connection to MongoDb
            var mongoClient = new MongoClient("mongodb://localhost");
            var database    = mongoClient.GetDatabase("Imdb");
            var collection  = database.GetCollection <Movie>("Movies");

            // Empty the collection
            collection.DeleteMany(FilterDefinition <Movie> .Empty);

            // Open the CSV
            using (var stream = new FileStream("movie_metadata.csv", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                using (var reader = new StreamReader(stream, Encoding.UTF8))
                {
                    var csvFactory = new CsvHelper.CsvFactory();
                    var csv        = csvFactory.CreateReader(reader, new CsvConfiguration {
                        Encoding = Encoding.UTF8, HasHeaderRecord = true, TrimFields = true, TrimHeaders = true
                    });
                    csv.ReadHeader();
                    while (csv.Read())
                    {
                        var fields = csv.CurrentRecord;
                        var movie  = new Movie();
                        for (var f = 0; f < fields.Length; f++)
                        {
                            var prop = movieProperties[f];
                            if (prop.PropertyType == tStr)
                            {
                                prop.SetValue(movie, fields[f].Trim());
                            }
                            if (prop.PropertyType == tInt)
                            {
                                prop.SetValue(movie, NullableHelper.ParseNullable <int>(fields[f].Trim(), int.TryParse));
                            }
                            if (prop.PropertyType == tLong)
                            {
                                prop.SetValue(movie, NullableHelper.ParseNullable <long>(fields[f].Trim(), long.TryParse));
                            }
                            if (prop.PropertyType == tDouble)
                            {
                                prop.SetValue(movie, NullableHelper.ParseNullable <double>(fields[f].Trim(), double.TryParse));
                            }
                        }

                        // Insert into Mongo
                        collection.InsertOne(movie);
                        Console.WriteLine(movie.MovieTitle);
                        inserted++;
                    }
                }

            Console.WriteLine("Done, {0:N0} movies inserted.", inserted);
        }
Example #4
0
        static void RunBenchmark(TextWriter resultWriter, TextWriter logWriter)
        {
            var fac = new CsvHelper.CsvFactory();

            using (var csvWriter = fac.CreateWriter(resultWriter))
            {
                csvWriter.WriteHeader <BenchmarkResult>();

                int[] sizes = { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000 };
                foreach (int sz in sizes)
                {
                    var row = new BenchmarkResult();

                    var termsCount = sz; row.NumberOfTerms = termsCount;
                    var varsCount  = sz; row.NumberOfVars = varsCount;
                    var grad       = new double[sz];


                    logWriter.WriteLine("Benchmark for {0} terms and {1} variables", termsCount, varsCount);

                    logWriter.Write("\tConstructing coefficients ...");
                    var coefficients = GenerateCoefficients(termsCount, varsCount);
                    logWriter.WriteLine(" done");

                    // generate variables
                    var vars = new Variable[varsCount];
                    for (var j = 0; j < sz; ++j)
                    {
                        vars[j] = new Variable();
                    }


                    logWriter.Write("\tGenerating input data ...");
                    var inputData = new double[1000][];
                    for (var j = 0; j < inputData.Length; ++j)
                    {
                        inputData[j] = RandomDoubles(varsCount);
                    }
                    logWriter.WriteLine(" done");
                    GC.Collect(GC.MaxGeneration, GCCollectionMode.Default, true);


                    ICompiledTerm compiledTerm = null;
                    row.CompileMilliseconds = MeasureMsec("Constructing compiled term", logWriter,
                                                          () => compiledTerm = ConstructTerm(coefficients, vars));

                    row.MillisecondsPerManualEval = MeasureMsecPerOp("manual evaluation",
                                                                     logWriter, inputData.Length, () => inputData.Sum(array => NativeEvaluate(coefficients, array)));

                    row.MillisecondsPerCompiledEval = MeasureMsecPerOp("AutoDiff compiled evaluation",
                                                                       logWriter, inputData.Length, () => inputData.Sum(array => compiledTerm.Evaluate(array)));

                    row.MillisecondsPerCompiledDiff = MeasureMsecPerOp("compiled differentiation",
                                                                       logWriter, inputData.Length, () =>
                    {
                        var sum = 0.0;
                        foreach (var array in inputData)
                        {
                            var val = compiledTerm.Differentiate(array, grad);
                            sum    += val + grad.Sum();
                        }
                        return(sum);
                    });

                    csvWriter.WriteRecord(row);
                }
            }
        }