String vs. StringBuilder

Yes, the performance difference is significant. See the KB article “How to improve string concatenation performance in Visual C#”. I have always tried to code for clarity first, and then optimize for performance later. That’s much easier than doing it the other way around! However, having seen the enormous performance difference in my applications between … Read more

Getting HTTP code in PHP using curl

First make sure if the URL is actually valid (a string, not empty, good syntax), this is quick to check server side. For example, doing this first could save a lot of time: if(!$url || !is_string($url) || ! preg_match(‘/^http(s)?:\/\/[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(\/.*)?$/i’, $url)){ return false; } Make sure you only fetch the headers, not the body content: @curl_setopt($ch, … Read more

Why is C so fast, and why aren’t other languages as fast or faster? [closed]

There isn’t much that’s special about C. That’s one of the reasons why it’s fast. Newer languages which have support for garbage collection, dynamic typing and other facilities which make it easier for the programmer to write programs. The catch is, there is additional processing overhead which will degrade the performance of the application. C … Read more

How to find the kth largest element in an unsorted array of length n in O(n)?

This is called finding the k-th order statistic. There’s a very simple randomized algorithm (called quickselect) taking O(n) average time, O(n^2) worst case time, and a pretty complicated non-randomized algorithm (called introselect) taking O(n) worst case time. There’s some info on Wikipedia, but it’s not very good. Everything you need is in these powerpoint slides. … Read more

Why is it faster to check if dictionary contains the key, rather than catch the exception in case it doesn’t?

On the one hand, throwing exceptions is inherently expensive, because the stack has to be unwound etc. On the other hand, accessing a value in a dictionary by its key is cheap, because it’s a fast, O(1) operation. BTW: The correct way to do this is to use TryGetValue obj item; if(!dict.TryGetValue(name, out item)) return … Read more