From 2dfaeacda846d070a77b81c83e9477a83aded76d Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Llorente Date: Mon, 17 Dec 2018 16:22:49 -0800 Subject: [PATCH 1/5] Initial MLModel and Object-Pooling implementation --- .../Forecast/CountrySalesModel.cs | 4 ++ .../src/eShopDashboard/Forecast/MLModel.cs | 42 +++++++++++++++++++ .../src/eShopDashboard/Forecast/ObjectPool.cs | 33 +++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs index 002e40188..59fc79378 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs @@ -16,6 +16,7 @@ public class CountrySalesModel { private readonly MLContext _mlContext; private readonly ITransformer _model; + private ObjectPool> _predictionEnginePool; //MLContext is injected through DI/IoC public CountrySalesModel(MLContext mlContext, IConfiguration configuration) @@ -28,6 +29,9 @@ public CountrySalesModel(MLContext mlContext, IConfiguration configuration) { _model = mlContext.Model.Load(fileStream); } + + //Create PredictionEngine Object Pool + _predictionEnginePool = new ObjectPool>(() => _model.MakePredictionFunction(_mlContext)); } /// diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs new file mode 100644 index 000000000..cfa00d779 --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs @@ -0,0 +1,42 @@ +using Microsoft.ML.Core.Data; +using Microsoft.ML.Runtime.Data; +using System.IO; +using Microsoft.ML; +using Microsoft.Extensions.Configuration; + +namespace eShopDashboard.Forecast +{ + public class MLModel + where TData : class + where TPrediction : class, new() + { + private readonly MLContext _mlContext; + private readonly ITransformer _model; + private readonly ObjectPool> _predictionEnginePool; + + //MLContext is injected through DI/IoC + public MLModel(MLContext mlContext, IConfiguration configuration) + { + _mlContext = mlContext; + string modelFolder = configuration["ForecastModelsPath"]; + + //Load the ProductSalesForecast model from the .ZIP file + using (var fileStream = File.OpenRead($"{modelFolder}/country_month_fastTreeTweedie.zip")) + { + _model = mlContext.Model.Load(fileStream); + } + + //Create PredictionEngine Object Pool + _predictionEnginePool = new ObjectPool>(() => _model.MakePredictionFunction(_mlContext)); + } + + /// + /// This function creates a prediction function from the loaded model. + /// + public PredictionFunction CreatePredictionFunction() + { + return _model.MakePredictionFunction(_mlContext); + } + + } +} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs new file mode 100644 index 000000000..c0d3cf830 --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace eShopDashboard.Forecast +{ + public class ObjectPool + { + private ConcurrentBag _objects; + private Func _objectGenerator; + + public ObjectPool(Func objectGenerator) + { + if (objectGenerator == null) throw new ArgumentNullException("objectGenerator"); + _objects = new ConcurrentBag(); + _objectGenerator = objectGenerator; + } + + public T GetObject() + { + T item; + if (_objects.TryTake(out item)) return item; + return _objectGenerator(); + } + + public void PutObject(T item) + { + _objects.Add(item); + } + } +} From ba9b869b64714d2dc515341f811456dc79dfbd9b Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Llorente Date: Tue, 18 Dec 2018 18:18:43 -0800 Subject: [PATCH 2/5] Object Pooling implementation for PredictionEngine objects which are not thread-safe --- .../CountrySalesForecastController.cs | 26 +++-------- .../ProductDemandForecastController.cs | 29 ++++-------- .../Forecast/CountrySalesModel.cs | 46 ------------------- .../src/eShopDashboard/Forecast/MLModel.cs | 44 ++++++++++++++---- .../src/eShopDashboard/Forecast/ObjectPool.cs | 21 +++++++-- .../Forecast/ProductSalesModel.cs | 36 --------------- .../src/eShopDashboard/Startup.cs | 40 ++++------------ 7 files changed, 77 insertions(+), 165 deletions(-) delete mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs delete mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ProductSalesModel.cs diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs index 29ce29050..15fcd4c84 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs @@ -18,18 +18,17 @@ namespace eShopDashboard.Controllers public class CountrySalesForecastController : Controller { private readonly AppSettings appSettings; - private readonly PredictionFunction countrySalesPredFunction; + private readonly MLModel countrySalesModel; private readonly ILogger logger; public CountrySalesForecastController(IOptionsSnapshot appSettings, - PredictionFunction countrySalesPredFunction, - ILogger logger - ) + MLModel countrySalesModel, + ILogger logger) { this.appSettings = appSettings.Value; - // Get injected Country Sales Prediction function - this.countrySalesPredFunction = countrySalesPredFunction; + // Get injected Country Sales Model for scoring + this.countrySalesModel = countrySalesModel; this.logger = logger; } @@ -52,19 +51,8 @@ public IActionResult GetCountrySalesForecast(string country, CountrySalesPrediction nextMonthSalesForecast = null; - //Set the critical section if using Singleton for the PredictionFunction object - // - //lock(this.countrySalesPredFunction) - //{ - //Predict action (Measure Prediction function Singleton vs. Scoped) - nextMonthSalesForecast = this.countrySalesPredFunction.Predict(countrySample); - //} - // - // Note that if using Scoped instead of singleton in DI/IoC you can remove the critical section - // It depends if you want better performance in single Http calls (using singleton) - // versus better scalability ann global performance if you have many Http requests/threads - // since the critical section is a bottleneck reducing the execution to one thread for that particular Predict() mathod call - // + //Predict + nextMonthSalesForecast = this.countrySalesModel.Predict(countrySample); //Stop measuring time watch.Stop(); diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs index 8fc723912..c150049dd 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs @@ -17,16 +17,15 @@ namespace eShopDashboard.Controllers public class ProductDemandForecastController : Controller { private readonly AppSettings appSettings; - private readonly PredictionFunction productSalesPredFunction; + private readonly MLModel productSalesModel; - public ProductDemandForecastController(IOptionsSnapshot appSettings, - PredictionFunction productSalesPredFunction - ) + public ProductDemandForecastController(IOptionsSnapshot appSettings, + MLModel productSalesModel) { this.appSettings = appSettings.Value; - // Get injected Product Sales Prediction function - this.productSalesPredFunction = productSalesPredFunction; + // Get injected Product Sales Model for scoring + this.productSalesModel = productSalesModel; } [HttpGet] @@ -39,23 +38,11 @@ public IActionResult GetProductUnitDemandEstimation(string productId, { // Build product sample var inputExample = new ProductData(productId, year, month, units, avg, count, max, min, prev); - - + ProductUnitPrediction nextMonthUnitDemandEstimation = null; - //Set the critical section if using Singleton for the PredictionFunction object - // - //lock(this.productSalesPredFunction) - //{ - // Returns prediction - nextMonthUnitDemandEstimation = this.productSalesPredFunction.Predict(inputExample); - //} - // - // Note that if using Scoped instead of singleton in DI/IoC you can remove the critical section - // It depends if you want better performance in single Http calls (using singleton) - // versus better scalability ann global performance if you have many Http requests/threads - // since the critical section is a bottleneck reducing the execution to one thread for that particular Predict() mathod call - // + //Predict + nextMonthUnitDemandEstimation = this.productSalesModel.Predict(inputExample); return Ok(nextMonthUnitDemandEstimation.Score); } diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs deleted file mode 100644 index 59fc79378..000000000 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/CountrySalesModel.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Microsoft.ML.Core.Data; -using Microsoft.ML.Runtime.Data; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -using Microsoft.ML.Legacy; -using Microsoft.ML.Runtime.Api; -using Microsoft.ML; -using Microsoft.Extensions.Configuration; - -namespace eShopDashboard.Forecast -{ - public class CountrySalesModel - { - private readonly MLContext _mlContext; - private readonly ITransformer _model; - private ObjectPool> _predictionEnginePool; - - //MLContext is injected through DI/IoC - public CountrySalesModel(MLContext mlContext, IConfiguration configuration) - { - _mlContext = mlContext; - string modelFolder = configuration["ForecastModelsPath"]; - - //Load the ProductSalesForecast model from the .ZIP file - using (var fileStream = File.OpenRead($"{modelFolder}/country_month_fastTreeTweedie.zip")) - { - _model = mlContext.Model.Load(fileStream); - } - - //Create PredictionEngine Object Pool - _predictionEnginePool = new ObjectPool>(() => _model.MakePredictionFunction(_mlContext)); - } - - /// - /// This function creates a prediction function from the loaded model. - /// - public PredictionFunction CreatePredictionFunction() - { - return _model.MakePredictionFunction(_mlContext); - } - - } -} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs index cfa00d779..091ef5d4a 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs @@ -13,29 +13,53 @@ public class MLModel private readonly MLContext _mlContext; private readonly ITransformer _model; private readonly ObjectPool> _predictionEnginePool; + private readonly int _minPredictionEngineObjectsInPool; - //MLContext is injected through DI/IoC - public MLModel(MLContext mlContext, IConfiguration configuration) + //Constructor with modelFilePathName to load + public MLModel(MLContext mlContext, string modelFilePathName, int minPredictionEngineObjectsInPool = 10) { _mlContext = mlContext; - string modelFolder = configuration["ForecastModelsPath"]; //Load the ProductSalesForecast model from the .ZIP file - using (var fileStream = File.OpenRead($"{modelFolder}/country_month_fastTreeTweedie.zip")) + using (var fileStream = File.OpenRead(modelFilePathName)) { _model = mlContext.Model.Load(fileStream); } + _minPredictionEngineObjectsInPool = minPredictionEngineObjectsInPool; + + //Create PredictionEngine Object Pool + _predictionEnginePool = CreatePredictionEngineObjectPool(); + } + + //Constructor with ITransformer model already created + public MLModel(MLContext mlContext, ITransformer model, int minPredictionEngineObjectsInPool = 10) + { + _mlContext = mlContext; + _model = model; + _minPredictionEngineObjectsInPool = minPredictionEngineObjectsInPool; + //Create PredictionEngine Object Pool - _predictionEnginePool = new ObjectPool>(() => _model.MakePredictionFunction(_mlContext)); + _predictionEnginePool = CreatePredictionEngineObjectPool(); } - /// - /// This function creates a prediction function from the loaded model. - /// - public PredictionFunction CreatePredictionFunction() + private ObjectPool> CreatePredictionEngineObjectPool() { - return _model.MakePredictionFunction(_mlContext); + return new ObjectPool>(() => _model.MakePredictionFunction(_mlContext), _minPredictionEngineObjectsInPool); + } + + public TPrediction Predict(TData dataSample) + { + //Get PredictionEngine object from the Object Pool + PredictionFunction predictionEngine = _predictionEnginePool.GetObject(); + + //Predict + TPrediction prediction = predictionEngine.Predict(dataSample); + + //Release used PredictionEngine object into the Object Pool + _predictionEnginePool.PutObject(predictionEngine); + + return prediction; } } diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs index c0d3cf830..53125e497 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs @@ -11,18 +11,33 @@ public class ObjectPool private ConcurrentBag _objects; private Func _objectGenerator; - public ObjectPool(Func objectGenerator) + public ObjectPool(Func objectGenerator, int minObjects = 5) { if (objectGenerator == null) throw new ArgumentNullException("objectGenerator"); _objects = new ConcurrentBag(); _objectGenerator = objectGenerator; + + //Measure total time of minimum objects creation + var watch = System.Diagnostics.Stopwatch.StartNew(); + + //Create minimum number of objects in pool + for (int i = 0; i < minObjects; i++) + { + _objects.Add(_objectGenerator()); + } + + //Stop measuring time + watch.Stop(); + long elapsedMs = watch.ElapsedMilliseconds; } public T GetObject() { T item; - if (_objects.TryTake(out item)) return item; - return _objectGenerator(); + if (_objects.TryTake(out item)) + return item; + else + return _objectGenerator(); } public void PutObject(T item) diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ProductSalesModel.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ProductSalesModel.cs deleted file mode 100644 index 124eaf2b2..000000000 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ProductSalesModel.cs +++ /dev/null @@ -1,36 +0,0 @@ - -using Microsoft.Extensions.Configuration; -using Microsoft.ML; -using Microsoft.ML.Core.Data; -using Microsoft.ML.Runtime.Data; -using System.IO; - -namespace eShopDashboard.Forecast -{ - public class ProductSalesModel - { - private readonly MLContext _mlContext; - private readonly ITransformer _model; - - //MLContext is injected through DI/IoC - public ProductSalesModel(MLContext mlContext, IConfiguration configuration) - { - _mlContext = mlContext; - string modelFolder = configuration["ForecastModelsPath"]; - - //Load the ProductSalesForecast model from the .ZIP file - using (var fileStream = File.OpenRead($"{modelFolder}/product_month_fastTreeTweedie.zip")) - { - _model = mlContext.Model.Load(fileStream); - } - } - - /// - /// This function creates a prediction engine from the loaded model. - /// - public PredictionFunction CreatePredictionFunction() - { - return _model.MakePredictionFunction(_mlContext); - } - } -} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs index 93516ca83..0d9cb0595 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs @@ -48,42 +48,22 @@ public void ConfigureServices(IServiceCollection services) return new MLContext(seed: 1); }); - // ProductSalesModel created as singleton for the whole ASP.NET Core app - // since it is threadsafe and models can be pretty large objects - services.AddSingleton(); - - // PredictionFunction for "ProductSales" created as scoped because it is not thread-safe - // Prediction Functions should be be re-used across calls because there are expensive initializations - // If set to be used as Singleton is very important to use critical sections "lock(predFunct)" in the code - // because the 'Predict()' method is not reentrant. - // - //services.AddSingleton>((ctx) => - services.AddScoped>((ctx) => + services.AddSingleton >((ctx) => { - //Create the Prediction Function object from its related model - var model = ctx.GetRequiredService(); - return model.CreatePredictionFunction(); + MLContext mlContext = ctx.GetRequiredService(); + string modelFolder = Configuration["ForecastModelsPath"]; + string modelFilePathName = $"{modelFolder}/product_month_fastTreeTweedie.zip"; + return new MLModel(mlContext, modelFilePathName); }); - - // CountrySalesModel created as singleton for the whole ASP.NET Core app - // since it is threadsafe and models can be pretty large objects - services.AddSingleton(); - - // PredictionFunction for "CountrySales" created as scoped because it is not thread-safe - // Prediction Functions should be be re-used across calls because there are expensive initializations - // If set to be used as Singleton is very important to use critical sections "lock(predFunct" in the code - // because the 'Predict()' method is not reentrant. - // - //services.AddSingleton>((ctx) => - services.AddScoped>((ctx) => + services.AddSingleton>((ctx) => { - //Create the Prediction Function object from its related model - var model = ctx.GetRequiredService(); - return model.CreatePredictionFunction(); + MLContext mlContext = ctx.GetRequiredService(); + string modelFolder = Configuration["ForecastModelsPath"]; + string modelFilePathName = $"{modelFolder}/country_month_fastTreeTweedie.zip"; + return new MLModel(mlContext, modelFilePathName, minPredictionEngineObjectsInPool:15); }); - services.Configure(Configuration.GetSection("CatalogSettings")); services.AddMvc(); From ac4664c7c79600f769b742c604963ea3c76e3fd0 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Llorente Date: Tue, 18 Dec 2018 18:51:15 -0800 Subject: [PATCH 3/5] Added maxPoolSize and minPoolSize --- .../src/eShopDashboard/Forecast/MLModel.cs | 11 ++++++++--- .../src/eShopDashboard/Forecast/ObjectPool.cs | 17 +++++++++++++---- .../src/eShopDashboard/Startup.cs | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs index 091ef5d4a..4c7c8513d 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs @@ -14,9 +14,10 @@ public class MLModel private readonly ITransformer _model; private readonly ObjectPool> _predictionEnginePool; private readonly int _minPredictionEngineObjectsInPool; + private readonly int _maxPredictionEngineObjectsInPool; //Constructor with modelFilePathName to load - public MLModel(MLContext mlContext, string modelFilePathName, int minPredictionEngineObjectsInPool = 10) + public MLModel(MLContext mlContext, string modelFilePathName, int minPredictionEngineObjectsInPool = 10, int maxPredictionEngineObjectsInPool = 1000) { _mlContext = mlContext; @@ -27,17 +28,19 @@ public MLModel(MLContext mlContext, string modelFilePathName, int minPredictionE } _minPredictionEngineObjectsInPool = minPredictionEngineObjectsInPool; + _maxPredictionEngineObjectsInPool = maxPredictionEngineObjectsInPool; //Create PredictionEngine Object Pool _predictionEnginePool = CreatePredictionEngineObjectPool(); } //Constructor with ITransformer model already created - public MLModel(MLContext mlContext, ITransformer model, int minPredictionEngineObjectsInPool = 10) + public MLModel(MLContext mlContext, ITransformer model, int minPredictionEngineObjectsInPool = 10, int maxPredictionEngineObjectsInPool = 1000) { _mlContext = mlContext; _model = model; _minPredictionEngineObjectsInPool = minPredictionEngineObjectsInPool; + _maxPredictionEngineObjectsInPool = maxPredictionEngineObjectsInPool; //Create PredictionEngine Object Pool _predictionEnginePool = CreatePredictionEngineObjectPool(); @@ -45,7 +48,9 @@ public MLModel(MLContext mlContext, ITransformer model, int minPredictionEngineO private ObjectPool> CreatePredictionEngineObjectPool() { - return new ObjectPool>(() => _model.MakePredictionFunction(_mlContext), _minPredictionEngineObjectsInPool); + return new ObjectPool>(() => _model.MakePredictionFunction(_mlContext), + _minPredictionEngineObjectsInPool, + _maxPredictionEngineObjectsInPool); } public TPrediction Predict(TData dataSample) diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs index 53125e497..6e506e878 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs @@ -10,18 +10,20 @@ public class ObjectPool { private ConcurrentBag _objects; private Func _objectGenerator; + private int _maxPoolSize; - public ObjectPool(Func objectGenerator, int minObjects = 5) + public ObjectPool(Func objectGenerator, int minPoolSize = 5, int maxPoolSize = 5000) { if (objectGenerator == null) throw new ArgumentNullException("objectGenerator"); _objects = new ConcurrentBag(); _objectGenerator = objectGenerator; - + _maxPoolSize = maxPoolSize; + //Measure total time of minimum objects creation var watch = System.Diagnostics.Stopwatch.StartNew(); //Create minimum number of objects in pool - for (int i = 0; i < minObjects; i++) + for (int i = 0; i < minPoolSize; i++) { _objects.Add(_objectGenerator()); } @@ -35,9 +37,16 @@ public T GetObject() { T item; if (_objects.TryTake(out item)) + { return item; + } else - return _objectGenerator(); + { + if(_objects.Count <= _maxPoolSize) + return _objectGenerator(); + else + throw new InvalidOperationException("MaxPoolSize reached"); + } } public void PutObject(T item) diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs index 0d9cb0595..6c7d0f8d0 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs @@ -61,7 +61,7 @@ public void ConfigureServices(IServiceCollection services) MLContext mlContext = ctx.GetRequiredService(); string modelFolder = Configuration["ForecastModelsPath"]; string modelFilePathName = $"{modelFolder}/country_month_fastTreeTweedie.zip"; - return new MLModel(mlContext, modelFilePathName, minPredictionEngineObjectsInPool:15); + return new MLModel(mlContext, modelFilePathName, minPredictionEngineObjectsInPool:50); }); services.Configure(Configuration.GetSection("CatalogSettings")); From db06f02de6cc7fa91b5c0fa0f1bec26e4c86c92f Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Llorente Date: Wed, 19 Dec 2018 12:23:18 -0800 Subject: [PATCH 4/5] Moved MLModelEngine to Common and created a sample Console app for testing object pooling --- .../MLModel.cs => common/MLModelEngine.cs} | 15 ++-- .../Forecast => common}/ObjectPool.cs | 9 ++- .../DataStructures/CountryData.cs | 39 +++++++++ .../DataStructures/CountrySalesPrediction.cs | 13 +++ .../DataStructures/ProductData.cs | 38 +++++++++ .../DataStructures/ProductUnitPrediction.cs | 13 +++ .../country_month_fastTreeTweedie.zip | Bin 0 -> 58898 bytes .../product_month_fastTreeTweedie.zip | Bin 0 -> 127026 bytes .../TestObjectPoolingConsoleApp/Program.cs | 74 ++++++++++++++++++ .../TestObjectPoolingConsoleApp.csproj | 30 +++++++ .../CountrySalesForecastController.cs | 6 +- .../ProductDemandForecastController.cs | 6 +- .../src/eShopDashboard/Startup.cs | 10 ++- .../src/eShopDashboard/eShopDashboard.csproj | 5 ++ samples/csharp/v0.8-All-Samples.sln | 11 +++ 15 files changed, 254 insertions(+), 15 deletions(-) rename samples/csharp/{end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs => common/MLModelEngine.cs} (81%) rename samples/csharp/{end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast => common}/ObjectPool.cs (91%) create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountryData.cs create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountrySalesPrediction.cs create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductData.cs create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductUnitPrediction.cs create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/ModelFiles/country_month_fastTreeTweedie.zip create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/ModelFiles/product_month_fastTreeTweedie.zip create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/Program.cs create mode 100644 samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/TestObjectPoolingConsoleApp.csproj diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs b/samples/csharp/common/MLModelEngine.cs similarity index 81% rename from samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs rename to samples/csharp/common/MLModelEngine.cs index 4c7c8513d..6b5864a07 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/MLModel.cs +++ b/samples/csharp/common/MLModelEngine.cs @@ -2,11 +2,11 @@ using Microsoft.ML.Runtime.Data; using System.IO; using Microsoft.ML; -using Microsoft.Extensions.Configuration; +//using Microsoft.Extensions.Configuration; -namespace eShopDashboard.Forecast +namespace Common { - public class MLModel + public class MLModelEngine where TData : class where TPrediction : class, new() { @@ -16,8 +16,13 @@ public class MLModel private readonly int _minPredictionEngineObjectsInPool; private readonly int _maxPredictionEngineObjectsInPool; + public int CurrentPredictionEnginePoolSize + { + get { return _predictionEnginePool.CurrentPoolSize; } + } + //Constructor with modelFilePathName to load - public MLModel(MLContext mlContext, string modelFilePathName, int minPredictionEngineObjectsInPool = 10, int maxPredictionEngineObjectsInPool = 1000) + public MLModelEngine(MLContext mlContext, string modelFilePathName, int minPredictionEngineObjectsInPool = 5, int maxPredictionEngineObjectsInPool = 1000) { _mlContext = mlContext; @@ -35,7 +40,7 @@ public MLModel(MLContext mlContext, string modelFilePathName, int minPredictionE } //Constructor with ITransformer model already created - public MLModel(MLContext mlContext, ITransformer model, int minPredictionEngineObjectsInPool = 10, int maxPredictionEngineObjectsInPool = 1000) + public MLModelEngine(MLContext mlContext, ITransformer model, int minPredictionEngineObjectsInPool = 5, int maxPredictionEngineObjectsInPool = 1000) { _mlContext = mlContext; _model = model; diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs b/samples/csharp/common/ObjectPool.cs similarity index 91% rename from samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs rename to samples/csharp/common/ObjectPool.cs index 6e506e878..028a2fa45 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Forecast/ObjectPool.cs +++ b/samples/csharp/common/ObjectPool.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Threading.Tasks; -namespace eShopDashboard.Forecast +namespace Common { public class ObjectPool { @@ -12,7 +12,12 @@ public class ObjectPool private Func _objectGenerator; private int _maxPoolSize; - public ObjectPool(Func objectGenerator, int minPoolSize = 5, int maxPoolSize = 5000) + public int CurrentPoolSize + { + get { return _objects.Count; } + } + + public ObjectPool(Func objectGenerator, int minPoolSize = 5, int maxPoolSize = 50000) { if (objectGenerator == null) throw new ArgumentNullException("objectGenerator"); _objects = new ConcurrentBag(); diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountryData.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountryData.cs new file mode 100644 index 000000000..3b0f130e2 --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountryData.cs @@ -0,0 +1,39 @@ + +namespace TestObjectPoolingConsoleApp.DataStructures +{ + /// + /// This is the input to the trained model. + /// + public class CountryData + { + // next,country,year,month,max,min,std,count,sales,med,prev + public CountryData(string country, int year, int month, float max, float min, float std, int count, float sales, float med, float prev) + { + this.country = country; + + this.year = year; + this.month = month; + this.max = max; + this.min = min; + this.std = std; + this.count = count; + this.sales = sales; + this.med = med; + this.prev = prev; + } + + public float next; + + public string country; + + public float year; + public float month; + public float max; + public float min; + public float std; + public float count; + public float sales; + public float med; + public float prev; + } +} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountrySalesPrediction.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountrySalesPrediction.cs new file mode 100644 index 000000000..8d19cee6f --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/CountrySalesPrediction.cs @@ -0,0 +1,13 @@ + +namespace TestObjectPoolingConsoleApp.DataStructures +{ + /// + /// This is the output of the scored model, the prediction. + /// + public class CountrySalesPrediction + { + // Below columns are produced by the model's predictor. + public float Score; + } + +} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductData.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductData.cs new file mode 100644 index 000000000..41c96aaee --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductData.cs @@ -0,0 +1,38 @@ + +namespace TestObjectPoolingConsoleApp.DataStructures +{ + /// + /// This is the input to the trained model. + /// + public class ProductData + { + // next,productId,year,month,units,avg,count,max,min,prev + public ProductData(string productId, int year, int month, float units, float avg, + int count, float max, float min, float prev) + { + this.productId = productId; + this.year = year; + this.month = month; + this.units = units; + this.avg = avg; + this.count = count; + this.max = max; + this.min = min; + this.prev = prev; + } + + public float next; + + public string productId; + + public float year; + public float month; + public float units; + public float avg; + public float count; + public float max; + public float min; + public float prev; + } + +} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductUnitPrediction.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductUnitPrediction.cs new file mode 100644 index 000000000..c8a55a6e3 --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/DataStructures/ProductUnitPrediction.cs @@ -0,0 +1,13 @@ + +namespace TestObjectPoolingConsoleApp.DataStructures +{ + /// + /// This is the output of the scored model, the prediction. + /// + public class ProductUnitPrediction + { + // Below columns are produced by the model's predictor. + public float Score; + } + +} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/ModelFiles/country_month_fastTreeTweedie.zip b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/ModelFiles/country_month_fastTreeTweedie.zip new file mode 100644 index 0000000000000000000000000000000000000000..78dd980fcdda1ca2fe4a0bebcbbfb326e7b9a9f5 GIT binary patch literal 58898 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 z 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 TdxU^M0sm6Kt>5C;-=6*pn00xP literal 0 HcmV?d00001 diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/ModelFiles/product_month_fastTreeTweedie.zip b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/ModelFiles/product_month_fastTreeTweedie.zip new file mode 100644 index 0000000000000000000000000000000000000000..5748cd106468c3887298ae2108bee70abbfb4082 GIT binary patch literal 127026 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%0A>#Mw2@rPSc%T=aaz?PpAWI@YV+mo{qI}PN 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�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 G@c#g%wJSsb literal 0 HcmV?d00001 diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/Program.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/Program.cs new file mode 100644 index 000000000..09eb02d87 --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/Program.cs @@ -0,0 +1,74 @@ +using Common; +using Microsoft.ML; +using System; +using System.Threading; +using System.Threading.Tasks; + +using TestObjectPoolingConsoleApp.DataStructures; + +namespace TestObjectPoolingConsoleApp +{ + class Program + { + static void Main(string[] args) + { + CancellationTokenSource cts = new CancellationTokenSource(); + + // Create an opportunity for the user to cancel. + Task.Run(() => + { + if (Console.ReadKey().KeyChar == 'c' || Console.ReadKey().KeyChar == 'C') + cts.Cancel(); + }); + + MLContext mlContext = new MLContext(seed:1); + string modelFolder = $"Forecast/ModelFiles"; + string modelFilePathName = $"ModelFiles/country_month_fastTreeTweedie.zip"; + var countrySalesModel = new MLModelEngine(mlContext, + modelFilePathName, + minPredictionEngineObjectsInPool: 2); + + Console.WriteLine("Current number of objects in pool: {0:####.####}", countrySalesModel.CurrentPredictionEnginePoolSize); + + //Single Prediction + var singleCountrySample = new CountryData("Australia", 2017, 1, 477, 164, 2486, 9, 10345, 281, 1029); + var singleNextMonthPrediction = countrySalesModel.Predict(singleCountrySample); + + Console.WriteLine("Prediction: {0:####.####}", singleNextMonthPrediction.Score); + + // Create a high demand for the modelEngine objects. + Parallel.For(0, 1000000, (i, loopState) => + { + //Sample country data + //next,country,year,month,max,min,std,count,sales,med,prev + //4.23056080166201,Australia,2017,1,477.34,164.916,2486.1346772137,9,10345.71,281.7,1029.11 + + var countrySample = new CountryData("Australia", 2017, 1, 477, 164, 2486, 9, 10345, 281, i); + + // This is the bottleneck in our application. All threads in this loop + // must serialize their access to the static Console class. + Console.CursorLeft = 0; + var nextMonthPrediction = countrySalesModel.Predict(countrySample); + + Console.WriteLine("Prediction: {0:####.####}", nextMonthPrediction.Score); + Console.WriteLine("-----------------------------------------"); + Console.WriteLine("Current number of objects in pool: {0:####.####}", countrySalesModel.CurrentPredictionEnginePoolSize); + + if (cts.Token.IsCancellationRequested) + loopState.Stop(); + + }); + + Console.WriteLine("-----------------------------------------"); + Console.WriteLine("Current number of objects in pool: {0:####.####}", countrySalesModel.CurrentPredictionEnginePoolSize); + + + Console.WriteLine("Press the Enter key to exit."); + Console.ReadLine(); + cts.Dispose(); + } + + } + + +} diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/TestObjectPoolingConsoleApp.csproj b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/TestObjectPoolingConsoleApp.csproj new file mode 100644 index 000000000..27978a8fd --- /dev/null +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/TestObjectPoolingConsoleApp/TestObjectPoolingConsoleApp.csproj @@ -0,0 +1,30 @@ + + + + Exe + netcoreapp2.1 + + + + + + + + + + + + + + + + + + Always + + + Always + + + + diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs index 15fcd4c84..91310d0ee 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/CountrySalesForecastController.cs @@ -11,6 +11,8 @@ using Microsoft.ML.Runtime.Data; using Serilog; +using Common; + namespace eShopDashboard.Controllers { [Produces("application/json")] @@ -18,11 +20,11 @@ namespace eShopDashboard.Controllers public class CountrySalesForecastController : Controller { private readonly AppSettings appSettings; - private readonly MLModel countrySalesModel; + private readonly MLModelEngine countrySalesModel; private readonly ILogger logger; public CountrySalesForecastController(IOptionsSnapshot appSettings, - MLModel countrySalesModel, + MLModelEngine countrySalesModel, ILogger logger) { this.appSettings = appSettings.Value; diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs index c150049dd..b62e2ba8d 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Controllers/ProductDemandForecastController.cs @@ -10,6 +10,8 @@ using Microsoft.ML.Runtime.Data; using Serilog; +using Common; + namespace eShopDashboard.Controllers { [Produces("application/json")] @@ -17,10 +19,10 @@ namespace eShopDashboard.Controllers public class ProductDemandForecastController : Controller { private readonly AppSettings appSettings; - private readonly MLModel productSalesModel; + private readonly MLModelEngine productSalesModel; public ProductDemandForecastController(IOptionsSnapshot appSettings, - MLModel productSalesModel) + MLModelEngine productSalesModel) { this.appSettings = appSettings.Value; diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs index 6c7d0f8d0..cd470f7f4 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/Startup.cs @@ -13,6 +13,8 @@ using Microsoft.ML.Runtime.Data; using Serilog; +using Common; + namespace eShopDashboard { public class Startup @@ -48,20 +50,20 @@ public void ConfigureServices(IServiceCollection services) return new MLContext(seed: 1); }); - services.AddSingleton >((ctx) => + services.AddSingleton >((ctx) => { MLContext mlContext = ctx.GetRequiredService(); string modelFolder = Configuration["ForecastModelsPath"]; string modelFilePathName = $"{modelFolder}/product_month_fastTreeTweedie.zip"; - return new MLModel(mlContext, modelFilePathName); + return new MLModelEngine(mlContext, modelFilePathName); }); - services.AddSingleton>((ctx) => + services.AddSingleton>((ctx) => { MLContext mlContext = ctx.GetRequiredService(); string modelFolder = Configuration["ForecastModelsPath"]; string modelFilePathName = $"{modelFolder}/country_month_fastTreeTweedie.zip"; - return new MLModel(mlContext, modelFilePathName, minPredictionEngineObjectsInPool:50); + return new MLModelEngine(mlContext, modelFilePathName, minPredictionEngineObjectsInPool:50); }); services.Configure(Configuration.GetSection("CatalogSettings")); diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/eShopDashboard.csproj b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/eShopDashboard.csproj index f1912a74d..b08e04f9a 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/eShopDashboard.csproj +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/src/eShopDashboard/eShopDashboard.csproj @@ -23,6 +23,7 @@ + @@ -32,6 +33,10 @@ + + + + Always diff --git a/samples/csharp/v0.8-All-Samples.sln b/samples/csharp/v0.8-All-Samples.sln index 4058bfc6f..80427983b 100644 --- a/samples/csharp/v0.8-All-Samples.sln +++ b/samples/csharp/v0.8-All-Samples.sln @@ -63,6 +63,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageClassification.Score", EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProductRecommendation.Solution", "ProductRecommendation.Solution", "{7C3CF2B0-F386-438F-811D-1FAE9ECCFF04}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestObjectPoolingConsoleApp", "end-to-end-apps\Regression-SalesForecast\src\TestObjectPoolingConsoleApp\TestObjectPoolingConsoleApp.csproj", "{DFB295B3-CA56-4971-AB70-316441F6B70D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -191,6 +193,14 @@ Global {A7D316AC-3081-4D1A-9AAF-BC2D7D84F356}.Release|Any CPU.Build.0 = Release|Any CPU {A7D316AC-3081-4D1A-9AAF-BC2D7D84F356}.Release|x64.ActiveCfg = Release|Any CPU {A7D316AC-3081-4D1A-9AAF-BC2D7D84F356}.Release|x64.Build.0 = Release|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Debug|x64.ActiveCfg = Debug|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Debug|x64.Build.0 = Debug|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Release|Any CPU.Build.0 = Release|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Release|x64.ActiveCfg = Release|Any CPU + {DFB295B3-CA56-4971-AB70-316441F6B70D}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -212,6 +222,7 @@ Global {5655380C-1A3D-469E-9018-D4A23950F536} = {D447649D-768F-44E8-8ECA-C711CD882DBB} {DE291554-85C3-4868-B666-1D295EC78CAD} = {820E8AF2-A47D-4AB8-A4AF-5CDFF97EBCDF} {A7D316AC-3081-4D1A-9AAF-BC2D7D84F356} = {256EED4C-79DE-46E5-8673-0991C630C6BD} + {DFB295B3-CA56-4971-AB70-316441F6B70D} = {A56C7785-F74C-41F4-92C7-E98CB2287B90} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {98369941-33DD-450C-A410-B9A91C8CDE91} From 651dee788d92ce2cbeb0e5d037ba442f5e3f90e9 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Llorente Date: Wed, 19 Dec 2018 12:29:32 -0800 Subject: [PATCH 5/5] Added Test Object Pooling Console app to solution --- .../Regression-SalesForecast/eShopDashboardML.sln | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/samples/csharp/end-to-end-apps/Regression-SalesForecast/eShopDashboardML.sln b/samples/csharp/end-to-end-apps/Regression-SalesForecast/eShopDashboardML.sln index 9ecf2232c..b7169a114 100644 --- a/samples/csharp/end-to-end-apps/Regression-SalesForecast/eShopDashboardML.sln +++ b/samples/csharp/end-to-end-apps/Regression-SalesForecast/eShopDashboardML.sln @@ -21,6 +21,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .editorconfig = .editorconfig EndProjectSection EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestObjectPoolingConsoleApp", "src\TestObjectPoolingConsoleApp\TestObjectPoolingConsoleApp.csproj", "{CF3DE8C7-81D6-4B2B-A2F0-82D15701F10A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +41,10 @@ Global {F5DC33CF-35B3-45DD-A4A2-977DEA38060A}.Debug|Any CPU.Build.0 = Debug|Any CPU {F5DC33CF-35B3-45DD-A4A2-977DEA38060A}.Release|Any CPU.ActiveCfg = Release|Any CPU {F5DC33CF-35B3-45DD-A4A2-977DEA38060A}.Release|Any CPU.Build.0 = Release|Any CPU + {CF3DE8C7-81D6-4B2B-A2F0-82D15701F10A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF3DE8C7-81D6-4B2B-A2F0-82D15701F10A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF3DE8C7-81D6-4B2B-A2F0-82D15701F10A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF3DE8C7-81D6-4B2B-A2F0-82D15701F10A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -47,6 +53,7 @@ Global {29DB8569-F5D6-4190-9DF4-8D18CA0AABA8} = {F395612F-24C7-4666-90B2-62E417033B4B} {5AB1C510-FEF6-4930-AE05-D16AF802084D} = {F395612F-24C7-4666-90B2-62E417033B4B} {F5DC33CF-35B3-45DD-A4A2-977DEA38060A} = {B3AF01E5-D172-47F9-991E-A85504958F43} + {CF3DE8C7-81D6-4B2B-A2F0-82D15701F10A} = {F395612F-24C7-4666-90B2-62E417033B4B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {1E47A71B-4F99-48EA-9267-DEE93B23BA31}