More of the most used APIs defined in the BCL?

Great comments from my last post... Here is my interpretations, comments\disagreements welcome ;-)

 

1,System.Type.GetTypeFromHandle(System.RuntimeTypeHandle handle),15399

As was mentioned in my comments, this is from the C# keyword “typeof”

Type t = typeof (MyType) ;

2,System.Byte[,,].Set(Int32 ,Int32 ,Int32 ,Byte ),13122

This one and 5 were very interesting… Turned out to all be from the same place in WinFX where we initialize a very large matrix of character data.. here is a sampling….

    /// <summary>

    /// ArabicFSM, class defines the static finite states for the Arabic and Syriac unicode blocks. The class

    /// is used to shape unicode text runs passed in from the Arabic Open Type Engine.

    /// </summary>

    internal static unsafe class  ArabicFSM

    {...

        static  byte [,,] ArabicShapeStateMachine   =

        {

            //  ARSYFSM_SHAPE_NOTSHAPED

            //  0      1      2      3      4      5      6      7      8      9      10     11     12     13     14     15     16     17     18     19     20     21     22     23     24     25     26 

            {

                {NCYNS, NC_IS, NC_IS, NC_IS, NC_IS, NCYNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCNNS, NCYNS, NCYNS, NCYNS, NCYNS}, // 0-ARSYCH_NONJOIN,

                {INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, INVAL, NCYNS}, // 1-ARSYCH_DUALJOIN,


3,System.IDisposable.Dispose(),3488

From C#’s using statement such as:

using (StreamReader r = File.OpenText() ) {}

4,System.Resources.ResourceManager.GetObject(System.String name),2845

Many were from code that looks up an exception message text:

throw new MyException (rm.GetObject (“message”));
5,System.Byte[,].Set(Int32 ,Int32 ,Byte ),2692

Same basic idea as 2.


6,System.Text.StringBuilder.Append(System.String value),2588

No tricks here (that I found), really popular API – After all Appending is what StringBuilders are good for.


7,System.Collections.ArrayList.get_Count(),2229
8,System.Collections.IEnumerator.MoveNext(),2158
9,System.Collections.IEnumerator.get_Current(),2083

All of these are to support C# and VB’s foreach statement.. for example

foreach (Type t in Assembly.GetTypes () ) {

}

 

10,System.Collections.ArrayList.Add(System.Object value),2049

Like 6, no trick, just a popular API…

 

Published 19 January 04 09:20 by BradA
Filed under: ,

Comments

# Vijay said on January 20, 2004 2:40 AM:
Brad, why do the numbers decrease so drastically for Dispose and further down ?? 15K, 13K and then 3.5K ; Whoa !

I was wondering what would be the count for Object.Equals(..) ! I use this method pretty often compared to the more C++ styled == operator and somehow got the impression that every parameter check for methods, every constructor check on params, property assignment check should use this invariably to check whether valid data is being passed. Am i missing something here ??

Also how about 'is' operator ?
# Panos Theofanopoulos said on January 20, 2004 7:26 AM:
#2,#5 I find this as *very* slow. AFAIK every access to ArabicShapeStateMachine will perform 3 bound checks. Why dont you use a flat array instead?
#3 the majority is (imho) at foreach statements(they are about 2k enumerators that must be disposed)
New Comments to this post are disabled

Search

Go

This Blog

Syndication

Page view tracker