(Sumber: milist DOTNET) Application Startup Time Improvement dengan Multi-core JIT di .NET 4.5 (Beta)

Answered (Sumber: milist DOTNET) Application Startup Time Improvement dengan Multi-core JIT di .NET 4.5 (Beta)

Semua Balasan

  • 30 April 2012 7:41
    Moderator
     
     

    kebanyakkan pass coba mpgo, handle path-nya masih belum bagus. jadi kita bantu dengan full-path.

    mungkin gambar di bawah bisa di coba.

    Dijawab oleh: dede


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

  • 30 April 2012 7:43
    Moderator
     
     

    Iya, bener, masih belum bagus path handling-nya. Saya udah coba pake full path, juga tetep ga bisa. Masalah saya itu keliatannya di argument AssemblyList. Kalo di contohnya 'kan bisa pake wild cards "*.*". Ternyata pas dicoba ga bisa, mesti di-provide explicitly. Kalo dependency satu, ga masalah. Kalo banyak, jadi repot... :D


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

  • 30 April 2012 7:43
    Moderator
     
     Jawab

    katanya namanya BETA... :)

    Kalau dependency-nya banyak, kita bisa buat helper yang baca assembly-nya lalu membuat list AssemblyList argument-nya. 

    seperti code di bawah, itupun kalau masih penasaran sama mpgo ini. :)

    http://dl.dropbox.com/u/19973434/NetIndonesia/Codes/MPGO/MPGOHelper.cs

    Dijawab oleh: dede


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

  • 30 April 2012 7:46
    Moderator
     
     

    He...3x, memang bener sih masih beta, cuma ga nyangka bakal kayak gitu juga. Lagian saya juga cuma ngikutin contoh yang dikasih... :D

    Anyway, thank bos untuk helpernya. Saya ga kepikiran bisa dibikin helper/wrapper kayak begitu. Saya coba dulu kalo begitu.


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

  • 30 April 2012 7:49
    Moderator
     
     

    BTW, mantep bos helper-nya. Saya suka liat code-nya, bener2 OO. Even untuk setting foreground color Console pun sampe pake IDisposable... he...3x. Tapi saya setuju, memang harus begitu sih biar rapi kodenya.

     

    Saya juga suka dengan implementasi MPGOAssemblyListBuilder(string) di bagian ini:

                allAssemblies.AddRange(
                    @"*.dll|*.exe"
                        .Split('|')
                        .SelectMany(filter => Directory.GetFiles(assemblyWorkingPath, filter))
                        .Select(Assembly.LoadFile)
                        .Where(
                            workingPathAssembly =>
                            assemblyTarget.GetReferencedAssemblies().Any(
                                referenceAssembly =>
                                referenceAssembly.FullName.Equals(workingPathAssembly.FullName)))); 

     

    Bener2 clean, simple, dan elegant... :D Tapi saya ubah dikit memang di bagian Where()-nya menjadi begini:

                allAssemblies.AddRange(
                    @"*.dll|*.exe"
                        .Split('|')
                        .SelectMany(filter => Directory.GetFiles(assemblyWorkingPath, filter))
                        .Select(Assembly.LoadFile)
                        .Where(
                            workingPathAssembly =>
                            !assemblyTarget.FullName.Equals(workingPathAssembly.FullName)
                            && !workingPathAssembly.Location.ToUpper().EndsWith("VSHOST.EXE")));

    karena setelah saya coba, GetReferencedAssemblies() ga me-refer ke semua assembly yang sebenernya dibutuhin assemblyTarget waktu runtime, mungkin karena faktor runtime loading. Jadinya biar gampang, ya saya include aja semua assembly keluaran dari VS/MSBuild.

    Setelah sukses di-profile pake MPGO dan di-measure, peningkatan application startup time pake MPGO memang jauh lebih signifikan dibandingin pake Multicore JIT. Sebagai perbandingan, kalo pake Multicore JIT bisa diperoleh peningkatannya sekitar 10%, sedangkan kalo pake MPGO menjadi sekitar 20%! Signifikan bener nilainya. Mungkin juga memang karena faktor NGen juga yang me-native-kan assembly2 yang dipake.

    So, thanks, bos sekali lagi untuk helper-nya. It's very helpful... :D

    Dijawab oleh: dede


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.