How do exceptions work (behind the scenes) in c++

Instead of guessing, I decided to actually look at the generated code with a small piece of C++ code and a somewhat old Linux install. class MyException { public: MyException() { } ~MyException() { } }; void my_throwing_function(bool throwit) { if (throwit) throw MyException(); } void another_function(); void log(unsigned count); void my_catching_function() { log(0); try … Read more

What’s the most efficient test of whether a PHP string ends with another string?

What Assaf said is correct. There is a built in function in PHP to do exactly that. substr_compare($str, $test, strlen($str)-strlen($test), strlen($test)) === 0; If $test is longer than $str PHP will give a warning, so you need to check for that first. function endswith($string, $test) { $strlen = strlen($string); $testlen = strlen($test); if ($testlen > … Read more

How to optimize for-comprehensions and loops in Scala?

The problem in this particular case is that you return from within the for-expression. That in turn gets translated into a throw of a NonLocalReturnException, which is caught at the enclosing method. The optimizer can eliminate the foreach but cannot yet eliminate the throw/catch. And throw/catch is expensive. But since such nested returns are rare … Read more

Is there a performance gain in using single quotes vs double quotes in ruby?

Summary: no speed difference; this great collaborative Ruby style guide recommends being consistent. I now use ‘string’ unless interpolation is needed (option A in the guide) and like it, but you will typically see more code with “string”. Details: Theoretically, it can make a difference when your code is parsed, but not only should you … Read more

Should I use multiplication or division?

Python: time python -c ‘for i in xrange(int(1e8)): t=12341234234.234 / 2.0’ real 0m26.676s user 0m25.154s sys 0m0.076s time python -c ‘for i in xrange(int(1e8)): t=12341234234.234 * 0.5’ real 0m17.932s user 0m16.481s sys 0m0.048s multiplication is 33% faster Lua: time lua -e ‘for i=1,1e8 do t=12341234234.234 / 2.0 end’ real 0m7.956s user 0m7.332s sys 0m0.032s time … Read more