Virtual Happy Hour is canceled this month (March) due to Good Friday.
Virtual Happy Hour is canceled this month (March) due to Good Friday.
EPiServer.Marketing.Testing 2.5.12
EPiServer.Marketing.Testing 2.6.0
Apr 17, 2020
May 14, 2020
Closed, Fixed and tested
This was reported by Expert Services in a local environment (details below).
This is a smaller than the Gen 0 GC over-allocation issue, but noteworthy and should be easy to resolve.
It’s caused by the IsInSystemFolder method of the TestingContextHelper class.
public bool IsInSystemFolder() { bool flag = true; if (this._contextHelper.HasCurrentContext()) flag = this._contextHelper.RequestedUrl().ToLower().Contains(this._episerverHelper.GetRootPath().ToLower()); return flag; }
If you notice the blue underlines above, you’ll see that this method is called within a RaiseContentEvent repeatedly within an individual request. The number of calls to this method is dependent on the volume of content being loaded, consequently.
This method calls RequestedUrl() and performs a ToLower() method on the resulting string. It does the same for GetRootPath().
You can see on the right side of perf view that these result in a large amount of memory being allocated because the multiplier is called per piece of content being loaded.
Overall, this one method is allocating 146MB of memory to Gen 0 within a 130 second timeframe. Based on an average of 3 pieces of content being loaded, we could reduce this one method’s allocations by 2/3 (or 97MB in 130 seconds) by simply storing the lowered string value within the _contextHelper and episerver helper. If there were 100 pieces of content being loaded, the reduction would be 99/100ths, and so on.