Are you joining strings here and there in the code base? The story about improper string concat usage.
Category Archives: General
Make unit tests public
Public unit tests for framework is win-win both for vendor, and framework consumers. My top 5 reasons for that. Led by example: Unicorn Unicorn is popular serialization mechanism with > 1.3M Nuget downloads! All you need to get started is to download the package and read readme. Custom requirements (f.e. store only specific part ofContinue reading “Make unit tests public”
Reviewing docker performance profile
We have profiled application start in the previous post, and will carry on wall clock time investigation; let’s start by looking at Thread Time report: First thing to notice – a set of processes running next to w3wp: CSC is a compilation effort, every entry takes ~4.6 seconds at least (delays application start as well)Continue reading “Reviewing docker performance profile”
Performance crime: Params
You might heard params are evil. Have you ever seen the performance bill for that? How to find out where params are used? Memory allocation report shows all allocations, we’ll start from here: Method with params creates an array behind the scenes, so hunting for object[]: IL code proves sad truth – array is alwaysContinue reading “Performance crime: Params”
Reckless interlocked operations
Let’s start with a guess – what is the most CPU-heavy operation in Sitecore? Answer: Performance counters initialization: Yes, that’s right, those performance counters which are powered by OS and super fast. Although Sitecore counter init implementation does not look offensive (volatile read & interlocked), counters are everywhere (cache lookup / access / object creation):Continue reading “Reckless interlocked operations”
Unit testing in Sitecore
Why ‘Sitecore is not testable’ cliche is no longer actual.
Performance crime: concurrent collections misuse
The case study on how the harmless collection could silently cause system to work slower and remain undetected for ages.
Performance crime: config to kill performance
Would you as a developer allow a setting that can make system 15 550 times slower? I’ve received a few memory dumps with high CPU; each scavenges AccessResultCache: How big is the cache so that every snapshot contains the operation? Detecting cache size from the snapshot A ClrMD code snippet locates objects in Sitecore.Caching.Generics.Cache namespaceContinue reading “Performance crime: config to kill performance”
Performance crime: no respect for mainstream flow
How expensive a lack of respect to mainstream usage could be?
Performance crime: wrong size detection
The amount of memory cache can use is defined in config: That is needed to protect against disk thrashing – running out of physical RAM so that disk is used to power virtual memory (terribly slow). That is a big hazard in Azure WebApps – much less RAM compared to old-school big boxes. Sitecore keepsContinue reading “Performance crime: wrong size detection”