Boosting Work Classes with a mini Object Pool

gearsWork and processing classes are typically short-lived, created to perform one form of processing or another then freed. They can be simple collections, handle I/O of one kind of another, perform computations, pattern matching, etc.

When they’re used for simple workloads, their short-lived temporary nature can sometimes become a performance problem.
(more…)

TIOBE isn’t the only index that needs fixing

404Worst thing in popularity is not being considered, or found.

Looks like TIOBE is not alone in differentiating Delphi and Pascal, other popularity indexes share the same issue:

More indexes I looked at didn’t show the “runners up”, only the top 5 or top 10, but they may as well have differentiated.

For lang-index, merging Pascal (rank 11) and Delphi (24), would be enough to reach rank 10, ahead of Ruby, just shy of Perl.

(more…)

Fixed TIOBE index

For some unfathomable reason, the TIOBE index distinguishes between “Pascal” and “Object Pascal”, and the “Pascal” category is seeing growth:

tiobe-pascal

So it can’t be the old classic procedural Pascal, can it? That leaves only Object Pascal dialects (FreePascal the largest, but also Oxygene and SmartPascal/DWScript). Pascal programming isn’t dead or dying.

(more…)

TMonitor vs TRTLCriticalSection

In this new episode of the TMonitor saga is a comparison of its locking features vs TRTLCriticalSection, aka the OS-supported critical section mechanism. Is it fair? is it fast?

Fairness means that if you have several threads attempting to lock the same resources, they’ll all get a chance and none of them gets the lion’s share. In other words, that there are no race conditions.

Speed is obvious, it’s about the overhead the locking mechanism incurs.

Edit 2013-08-24: looks like the issue discussed here should be resolved in XE5, cf Monitoring the Monitor by Allen Bauer.

(more…)

Immutable strings… in Delphi?

One of the “novelties” of the NextGen Delphi compiler is immutable strings, which I find quite puzzling, for lack of a better word, given that Delphi already had reference-counted copy-on-write strings, and the NextGen compiler uses reference-counted strings.

I always considered that Delphi’s String type was one of its remaining strong points, being a high-level abstraction (higher than Java’s or .Net’s String/StringBuilder dichotomy) with excellent low-level performance (on par with C/C++  character arrays).

From the recent discussions, it appears many don’t know what makes/made Delphi String so special, so here is a quick summary.

(more…)