I have a site where two language is available.
In admin panel product controller edit action result
this snippet code
AddLocales(_languageService, model.Locales, (locale, languageId) =>
{
locale.Name = product.GetLocalized(x => x.Name, languageId, false, false);
locale.ShortDescription = product.GetLocalized(x => x.ShortDescription, languageId, false, false);
locale.FullDescription = product.GetLocalized(x => x.FullDescription, languageId, false, false);
locale.MetaKeywords = product.GetLocalized(x => x.MetaKeywords, languageId, false, false);
locale.MetaDescription = product.GetLocalized(x => x.MetaDescription, languageId, false, false);
locale.MetaTitle = product.GetLocalized(x => x.MetaTitle, languageId, false, false);
locale.SeName = product.GetSeName(languageId, false, false);
});
take almost 6 seconds.
My code in edit function
public ActionResult Edit(int id)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageProducts))
return AccessDeniedView();
var product = _productService.GetProductById(id);
if (product == null || product.Deleted)
//No product found with the specified id
return RedirectToAction("List");
//a vendor should have access only to his products
if (_workContext.CurrentVendor != null && product.VendorId != _workContext.CurrentVendor.Id)
return RedirectToAction("List");
var model = product.ToModel();
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
PrepareProductModel(model, product, false, false);
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
stopwatch.Start();
AddLocales(_languageService, model.Locales, (locale, languageId) =>
{
locale.Name = product.GetLocalized(x => x.Name, languageId, false, false);
locale.ShortDescription = product.GetLocalized(x => x.ShortDescription, languageId, false, false);
locale.FullDescription = product.GetLocalized(x => x.FullDescription, languageId, false, false);
locale.MetaKeywords = product.GetLocalized(x => x.MetaKeywords, languageId, false, false);
locale.MetaDescription = product.GetLocalized(x => x.MetaDescription, languageId, false, false);
locale.MetaTitle = product.GetLocalized(x => x.MetaTitle, languageId, false, false);
locale.SeName = product.GetSeName(languageId, false, false);
});
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
stopwatch.Start();
PrepareAclModel(model, product, false);
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
stopwatch.Start();
PrepareStoresMappingModel(model, product, false);
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
stopwatch.Start();
PrepareAddProductPictureModel(model);
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
stopwatch.Start();
PrepareStickerTypeModel(model);
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
stopwatch.Start();
PrepareStickerColorModel(model);
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
stopwatch.Start();
PrepareStickerShapeModel(model);
stopwatch.Stop();
Debug.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
return View(model);
}
time taking here
Time elapsed: 00:00:00.8479027
Time elapsed: 00:00:06.1528029
Time elapsed: 00:00:06.1921305
Time elapsed: 00:00:06.2090919
Time elapsed: 00:00:06.2426028
Time elapsed: 00:00:06.2619983
Time elapsed: 00:00:06.2859464
Time elapsed: 00:00:06.3033478
Is there any way to increase performance in addlocales function?