- Home
- Products
- Integration
- Tutorial
- Barcode FAQ
- Purchase
- Company
c# generating barcode C++ Example of a Complicated Pointer Expression Inside a Loop in Visual C#.NET
C++ Example of a Complicated Pointer Expression Inside a Loop Generate GTIN - 13 In Visual C#.NET Using Barcode creator for Visual Studio .NET Control to generate, create EAN13 image in VS .NET applications. www.OnBarcode.comEAN13 Reader In Visual C#.NET Using Barcode decoder for .NET framework Control to read, scan read, scan image in .NET applications. www.OnBarcode.comfor ( i = 0; i < rateCount; i++ ) { netRate[ i ] = baseRate[ i ] * rates->discounts->factors->net; } Draw Bar Code In Visual C#.NET Using Barcode creation for Visual Studio .NET Control to generate, create bar code image in Visual Studio .NET applications. www.OnBarcode.comScanning Bar Code In C# Using Barcode decoder for Visual Studio .NET Control to read, scan read, scan image in VS .NET applications. www.OnBarcode.comIn this case, assigning the complicated pointer expression to a well-named variable improves readability and often improves performance. GTIN - 13 Maker In .NET Using Barcode maker for ASP.NET Control to generate, create GS1 - 13 image in ASP.NET applications. www.OnBarcode.comDraw GTIN - 13 In .NET Using Barcode drawer for VS .NET Control to generate, create UPC - 13 image in VS .NET applications. www.OnBarcode.comC++ Example of Simplifying a Complicated Pointer Expression
EAN 13 Drawer In VB.NET Using Barcode creation for VS .NET Control to generate, create GS1 - 13 image in .NET applications. www.OnBarcode.comGS1 128 Creator In Visual C#.NET Using Barcode creator for .NET Control to generate, create EAN128 image in Visual Studio .NET applications. www.OnBarcode.comquantityDiscount = rates->discounts->factors->net; for ( i = 0; i < rateCount; i++ ) { netRate[ i ] = baseRate[ i ] * quantityDiscount; } 1D Barcode Encoder In Visual C#.NET Using Barcode creation for .NET Control to generate, create 1D image in VS .NET applications. www.OnBarcode.comCreate Matrix 2D Barcode In C# Using Barcode generation for .NET framework Control to generate, create 2D Barcode image in Visual Studio .NET applications. www.OnBarcode.comThe extra variable, quantityDiscount, makes it clear that the baseRate array is being multiplied by a quantity-discount factor to compute the net rate. That wasn t at all clear from the original expression in the loop. Putting the complicated pointer expression into a variable outside the loop also saves the pointer from being dereferenced three times for each pass through the loop, resulting in the following savings: Make Bar Code In C#.NET Using Barcode printer for .NET framework Control to generate, create bar code image in VS .NET applications. www.OnBarcode.comUSPS Confirm Service Barcode Maker In Visual C# Using Barcode printer for Visual Studio .NET Control to generate, create USPS Confirm Service Barcode image in .NET applications. www.OnBarcode.comCode-Tuned Time 2.97 1.97 2.35
PDF417 Creation In None Using Barcode drawer for Software Control to generate, create PDF417 image in Software applications. www.OnBarcode.comCreate Code 128 Code Set B In None Using Barcode maker for Office Excel Control to generate, create Code 128A image in Office Excel applications. www.OnBarcode.comLanguage C++ C# Java
Barcode Maker In Java Using Barcode generation for Android Control to generate, create barcode image in Android applications. www.OnBarcode.comDraw Code 128 Code Set A In None Using Barcode printer for Software Control to generate, create Code 128 Code Set A image in Software applications. www.OnBarcode.comStraight Time 3.69 2.27 4.13
UCC-128 Creation In None Using Barcode generator for Software Control to generate, create EAN 128 image in Software applications. www.OnBarcode.comUCC - 12 Printer In Java Using Barcode printer for Android Control to generate, create USS-128 image in Android applications. www.OnBarcode.comTime Savings 19% 13% 43% UPC-A Drawer In Objective-C Using Barcode generation for iPhone Control to generate, create UPC A image in iPhone applications. www.OnBarcode.comDecoding Code 39 Full ASCII In None Using Barcode reader for Software Control to read, scan read, scan image in Software applications. www.OnBarcode.comNote: Benchmarked for the case in which rateCount equals 100.
de Complete
26. Code-Tuning Techniques
Page 14
Except for the Java compiler, the savings aren t anything to crow about, implying that during initial coding you can use whichever technique is more readable without worrying about the speed of the code until later. Sentinel Values
When you have a loop with a compound test, you can often save time by simplifying the test. If the loop is a search loop, one way to simplify the test is to use a sentinel value, a value that you put just past the end of the search range and that s guaranteed to terminate the search. The classic example of a compound test that can be improved by use of a sentinel is the search loop that checks both whether it has found the value it is seeking and whether it has run out of values. Here s the code: C# Example of Compound Tests in a Search Loop
found = FALSE; i = 0; while ( ( !found ) && ( i < count ) ) { if ( item[ i ] == testValue ) { found = TRUE; } else { i++; } } if ( found ) { ... 8 Here s the compound test.
In this code, each iteration of the loop tests for !found and for i < count. The purpose of the !found test is to determine when the desired element has been found. The purpose of the i < count test is to avoid running past the end of the array. Inside the loop, each value of item[] is tested individually, so the loop really has three tests for each iteration. In this kind of search loop, you can combine the three tests so that you test only once per iteration by putting a sentinel at the end of the search range to stop the loop. In this case, you can simply assign the value you re looking for to the element just beyond the end of the search range. (Remember to leave space for that element when you declare the array.) You then check each element, and if you don t find the element until you find the one you stuck at the end, you know that the value you re looking for isn t really there. Here s the code: de Complete
26. Code-Tuning Techniques
Page 15
C# Example of Using a Sentinel Value to Speed Up a Loop
// set sentinel value, preserving the original value initialValue = item[ count ]; item[ count ] = testValue; i = 0; while ( item[ i ] != testValue ) { i++; } // restore the value displaced by the sentinel item[ count ] = initialValue; // check if value was found if ( i < count ) { ... 4 Remember to allow space for the sentinel value at the end of the array.
When item is an array of integers, the savings can be dramatic: CodeTuned Time 0.590 0.912 0.470
Language C# Java Visual Basic
Straight Time 0.771 1.63 1.34
Time Savings 23% 44% 65% Performance Ratio 1.3:1 2:1 3:1 Note: Search is of a 100-element array of integers.
The Visual Basic results are particularly dramatic, but all the results are good. When the kind of array changes, however, the results also change. Here are the results when item is an array of single-precision floating-point numbers:
|
|