How much overhead does SSL impose?

Order of magnitude: zero. In other words, you won’t see your throughput cut in half, or anything like it, when you add TLS. Answers to the “duplicate” question focus heavily on application performance, and how that compares to SSL overhead. This question specifically excludes application processing, and seeks to compare non-SSL to SSL only. While … Read more

How expensive is RTTI?

Regardless of compiler, you can always save on runtime if you can afford to do if (typeid(a) == typeid(b)) { B* ba = static_cast<B*>(&a); etc; } instead of B* ba = dynamic_cast<B*>(&a); if (ba) { etc; } The former involves only one comparison of std::type_info; the latter necessarily involves traversing an inheritance tree plus comparisons. … Read more

Is there a performance impact when calling ToList()?

IEnumerable<T>.ToList() Yes, IEnumerable<T>.ToList() does have a performance impact, it is an O(n) operation though it will likely only require attention in performance critical operations. The ToList() operation will use the List(IEnumerable<T> collection) constructor. This constructor must make a copy of the array (more generally IEnumerable<T>), otherwise future modifications of the original array will change on … Read more

Is this a “good enough” random algorithm; why isn’t it used if it’s faster?

Your QuickRandom implementation hasn’t really an uniform distribution. The frequencies are generally higher at the lower values while Math.random() has a more uniform distribution. Here’s a SSCCE which shows that: package com.stackoverflow.q14491966; import java.util.Arrays; public class Test { public static void main(String[] args) throws Exception { QuickRandom qr = new QuickRandom(); int[] frequencies = new … Read more

How does one write code that best utilizes the CPU cache to improve performance?

The cache is there to reduce the number of times the CPU would stall waiting for a memory request to be fulfilled (avoiding the memory latency), and as a second effect, possibly to reduce the overall amount of data that needs to be transfered (preserving memory bandwidth). Techniques for avoiding suffering from memory fetch latency … Read more

Why is HashSet so much slower than HashSet?

There are two perf problems induced by the Point struct. Something you can see when you add Console.WriteLine(GC.CollectionCount(0)); to the test code. You’ll see that the Point test requires ~3720 collections but the string test only needs ~18 collections. Not for free. When you see a value type induce so many collections then you need … Read more