Notable articles on DDJ in 2005

Guy Steele’s “Thoughts on Language Design”

DDJ>Thoughts on Language Design

A number of people pointed out that if your language has procedure calls and block structure, and your optimizing compiler is sufficiently talented, then goto is merely a special case of a procedure call—not only theoretically, but pragmatically, and if a procedure call without arguments isn’t as fast as a goto, then your optimizing compiler is leaving a lot of performance on the table.

“… low-end Java platform to the high end BREW platform there is a performance difference of well over 20x.” says Carmack

A brief John Carmack interview from Guardian Unlimited: Gamesblog

Was it strange returning to the very origins of Doom – in terms of graphics, CPU, memory restrictions? Did it bring back any memories of your work on the original game?I’m really not the reminiscing type. Capabilities wise, everything I was able to do back then, I can do a lot better now, but the mobile platform isn’t well suited to tight optimization because of the incredible range of performance you are expected to support. From our low-end Java platform (which is really a mid-range java platform, we don’t support the real low-end) to the high end BREW platform there is a performance difference of well over 20x.

I did take some value out of looking at the extreme simplicity of implementation that the tight resource limits required. I do feel that modern games are often abstracted a lot more than is really necessary, and it leads to robustness issues.

Comparing Two High-Performance I/O Design Patterns

Comparing Two High-Performance I/O Design Patterns

This article investigates and compares different design patterns of high performance TCP-based servers. In addition to existing approaches, it proposes a scalable single-codebase, multi-platform solution (with code examples) and describes its fine-tuning on different platforms. It also compares performance of Java, C# and C++ implementations of proposed and existing solutions.

How to Monitor MySQL’s performance

MySQL AB :: How to Monitor MySQL’s performance

…how you can monitor the database performance of your MySQL installation. Monitoring is always an iterative and continuous process. You need to learn what patterns are OK for your database and what are the signs of slight problems or even dangerous situations.Below are the main items you can use to monitor your system:

  1. mysqladmin extended (absolute values)
  2. mysqladmin extended -i10 -r (relative values)
  3. mysqladmin processlist
  4. mysql -e “show innodb status”
  5. OS data. vmstat/iostat
  6. MySQL error log
  7. InnoDB tablespace info.

How much more mileage is left in x86?‘s Chris Hall inteviews AMD’s Raghuram Tupuri, GM in the Microprocessor Solutions Sector – Design Engineering at AMD.

Q: The consensus within the industry is that AMD64 has clearly been a tremendous achievement for AMD and to a large extent has re-defined the competitive landscape in microprocessors. What was the design approach – if you like, the design philosophy – that guided development of AMD64?

A: The core design philosophy is to deliver higher performance to the end user. As micro-architectural improvements are achieved, they are evaluated with respect to the end-user experience and future software needs. My own view is that we have not yet reached the limits of what can be achieved by micro-architectural changes and enhancements. As we progress in the technology, and more transistors continue to become available, we will continue to see the adoption of advanced micro-architectural techniques. We will continue to see a lot more pre-fetch, in hardware, and a lot more speculative execution, but at the same time we will be factoring in power consumption.

Q: How much more mileage is left in x86? Are there any realistic alternatives, given the less than compelling performance of Intel’s IA-64 architecture and Itanium processors?

A: I would be surprised if, a few years down, anyone even remembers the Itanium processor. Intel now offers two 64-bit solutions, IA-64 and AMD64. I think that tells you all you need to know about the success of x84 and AMD64.

I think there is still quite a bit of mileage left in x86, but the actual mileage will be determined by the software base. If I’m a software vendor, what I want to focus on is developing new software and selling it to more end users. If the software needs to be ported to different processor platforms, then it is time or money deducted from the development of new algorithms or the improvement of existing programs. Given the ubiquity of x86, you only need to develop a set of binaries once, and they can then be applied in any number of instances.

Whatever criticisms have been leveled at x86, it remains the longest surviving instruction set. No other instruction set has had this long a lifetime. Other instruction sets have come and gone, but x86 lives on. A technologist may not like x86; it may not be the sleek instruction set everyone would like to see, but in the end, it’s the end users who determine which technology will be used. The marketplace determines the acceptance of a particular instruction set.

Leading by design: Q&A with Dr. Raghuram Tupuri, AMD