I'll be up at both JavaOne and Oracle Open World presenting. I have a total of three presentations:
- Mixed-Language Development: Leveraging Native Code from Java
- Performance Tuning Where Java Meets the Hardware
- Developing Efficient Database Applications with C and C++
I'm excited by these opportunities - particularly working with (more...)
Just hacked up a snippet of code to stop a thread migrating to a different CPU while it runs. This should help the thread get, and keep, local memory. This in turn should reduce run-to-run variance.
processorid_t proc = getcpuid();
if (processor_bind(P_LWPID, P_MYID, proc, (more...)
Different processors have different optimal sequences of code. Fortunately, most of the time the differences are minor, and we can easily accommodate them by generating generic code.
If you needed more than this, then the "old" model was to use dynamic string tokens to pick the best library for the (more...)
The C11 and C++11 standards introduced some very useful features into the language. In particular they provided language-level access to threading and synchronisation primitives. So using the new standards we can write multithreaded code that compiles and runs on standard compliant platforms. I've tackled translating Windows and POSIX threads before (more...)
Ok, so I've encountered this twice in 24 hours. So it's probably worth talking about it.
The preprocessor does a simple text substitution as it works its way through your source files. Sometimes this has "unanticipated" side-effects. When this happens, you'll normally get a "hey, this makes no sense at all" error from the compiler. Here's an example:
$ more c.c
$ CC c.c
$ CC c.c
"c.c", line 6: Error: Badly formed expression.
"c.c", line 7: Error: The left operand (more...)