Find articles by K. Korfmacher Find articles by Walter A.
WPbytes in sizeas compiled in the small model with Borland and Microsoft compilers with optimization on opt and off no opt.
ASM ; Assembler subroutine to perform a bit checksum on the file ; opened on the passed-in handle. Stores the result in the ; passed-in checksum variable. Returns 1 for success, 0 for error. Optimization makes code faster, but without proper design, optimization just creates fast slow code.
Well, then, how are we going to improve our design? Know the Territory Just why is Listing 1. The C library implements the read function by calling DOS to read the desired number of bytes. I figured this out by watching the code execute with a debugger, but you can buy library source code from both Microsoft and Borland.
That means that Listing 1. For starters, DOS functions are invoked with interrupts, and interrupts are among the slowest instructions of the x86 family CPUs. Then, DOS has to set up internally and branch to the desired function, expending more cycles in the process.
Finally, DOS has to search its own buffers to see if the desired byte has already been read, read it from the disk if not, store the byte in the specified location, and return.
All of that takes a long time—far, far longer than the rest of the main loop in Listing 1. In short, Listing 1.
You can verify this for yourself by watching the code with a debugger or using a code profiler, but take my word for it: How can we speed up Listing 1. It should be clear that we must somehow avoid invoking DOS for every byte in the file, and that means reading more than one byte at a time, then buffering the data and parceling it out for examination one byte at a time.
The results confirm our theories splendidly, and validate our new design. As shown in Table 1. To the casual observer, read and getc would seem slightly different but pretty much interchangeable, and yet in this application the performance difference between the two is about the same as that between a 4.
Make sure you understand what really goes on when you insert a seemingly-innocuous function call into the time-critical portions of your code. In other words, know the territory! Spend your time improving the performance of the code inside heavily-used loops and in the portions of your programs that directly affect response time.
Let C do what it does well, and use assembly only when it makes a perceptible difference. Always Consider the Alternatives Listing 1.
Like readgetc calls DOS to read from the file; the speed improvement of Listing 1. Easier, yes, but not faster.
Every invocation of getc involves pushing a parameter, executing a call to the C library function, getting the parameter in the C library codelooking up information about the desired stream, unbuffering the next byte from the stream, and returning to the calling code.
That takes a considerable amount of time, especially by contrast with simply maintaining a pointer to a buffer and whizzing through the data in the buffer inside a single loop.
There are four reasons that many programmers would give for not trying to improve on Listing 1. The code is already fast enough. The C library conveniently handles the buffering of file data, and it would be a nuisance to have to implement that capability.
The second reason is the hallmark of the mediocre programmer. Know when optimization matters—and then optimize when it does! The third reason is often fallacious.
C library functions are not always written in assembly, nor are they always particularly well-optimized. As an example, consider Listing 1.
Clearly, you can do well by using special-purpose C code in place of a C library function—if you have a thorough understanding of how the C library function operates and exactly what your application needs done. The key is the concept of handling data in restartable blocks; that is, reading a chunk of data, operating on the data until it runs out, suspending the operation while more data is read in, and then continuing as though nothing had happened.
At any rate, Listing 1. Always consider the alternatives; a bit of clever thinking and program redesign can go a long way.
Know How to Turn On the Juice I have said time and again that optimization is pointless until the design is settled.
When that time comes, however, optimization can indeed make a significant difference. These are considerable improvements, well worth pursuing—once the design has been maxed out.Directory of computer-aided Drug Design tools Click2Drug contains a comprehensive list of computer-aided drug design (CADD) software, databases and web services.
this review is to discuss the methods of lead discovery, lead optimization and its role in molecular modification of lead compound in analog design. KEYWORDS: Lead discovery; Lead optimization; Molecular modification; Analog design Introduction Drug design is an integrated developing discipline which portends an era of tailored drug.
In the social sciences and life sciences, a case study is a research method involving an up-close, in-depth, and detailed examination of a subject of study (the case), as well as its related contextual conditions..
Case studies can be produced by following a formal research method. These case studies are likely to appear in formal research venues, as journals and professional conferences. On average, we keep postings up at least 60 days. We check all listings multiple times a week to make sure they are still valid.
If jobs expire, we remove them from this page. The goal of our research endeavor was to successfully employ modern lead discovery and optimization strategies towards the development and identification of compounds possessing antimalarial activity. VIRTUAL SCREENING AND LEAD OPTIMIZATION TO IDENTIFY NOVEL INHIBITORS FOR HDAC-8 Maria Antony Dhivyan JE and Anoop MN Bioinformatics involve the use of techniques including applied mathematics, informatics, statistics, computer science, artificial intelligence, chemistry, and Lead optimization compares the properties of various lead.