<?xml version="1.0"?>
<?xml-stylesheet href="/App_Themes/Rss/Rss.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:snippetcenter="http://www.snippetcenter.org/">
<channel>
	<title>snippetcenter.org Kommentar-Feed IsGuid()</title>
	<link>http://www.snippetcenter.org/</link>
	<description>Die neuesten Kommentare zu IsGuid()</description>
	<language>de-de</language>
	<copyright>snippetcenter.org</copyright>
	<generator>Hinweis: Dies ist ein RSS-Dokument zum Lesen in deinem RSS-Reader. Klick für mehr Infos.</generator>

	<image>
		<url>http://www.snippetcenter.org/Library/Media/Public/button_88x31.png</url>
		<title>snippetcenter.org</title>
		<link>http://www.snippetcenter.org/</link>
		<width>88</width>
		<height>31</height>
	</image>
	
	<item>
     <title><![CDATA[Kommentar von prorgookie]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></guid>
     <pubDate>Mon, 01 May 2006 22:05:24 GMT</pubDate>
     <description><![CDATA[hätte mich auch gewundert, dass eine RegEx langsam gewesen wäre, dann man sollte gerade in dieser Hinsicht tunlichst auf RefEx zurückgreifen, sind halt extrem mächtig...!]]></description>
     <link><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></link>
</item>

<item>
     <title><![CDATA[Kommentar von Jörg Uth]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></guid>
     <pubDate>Thu, 27 Apr 2006 17:01:29 GMT</pubDate>
     <description><![CDATA[Also, was soll ich sagen, habe soeben mein Testprogramm von gestern noch mal laufen lassen und Du hast Recht:

Welcome to PerformaceTest
Anzahl Durchläufe: 100000
Der erste Test dauerte:2828,125 ms
RETURN für den 2. Test:
Der zweite Test dauerte:84468,75 ms

Unglaublich - Da hatte mein Rechner gestern wohl den "new Guid Tag"!!! - Am Test Code habe ich nämlich nichts verändert. Da staunt der Laie - der Fachmann macht jetzt Feierabend :)
]]></description>
     <link><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></link>
</item>

<item>
     <title><![CDATA[Kommentar von Thomas]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></guid>
     <pubDate>Thu, 27 Apr 2006 16:13:24 GMT</pubDate>
     <description><![CDATA[Also ich habs jetzt nochmal probiert, mit folgendem Testprogramm:

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace SpeedTestIsGuid
{
    class Program
    {
        static void Main(string[] args)
        {

            string validGuid = Guid.NewGuid().ToString();
            string invalidGuid = "dkhsfdsklfbsdn";

            Console.WriteLine("Gültige Guid: {0}", validGuid);
            Console.WriteLine("Ungültige Guid: {0}", invalidGuid);

            Console.WriteLine("Starte Test ...");

            int start, falseCount, trueCount;

            start = Environment.TickCount;
            trueCount = falseCount = 0;

            // Teste Variante 1
            for (int i = 0; i 
        /// Variante 1
        /// 
        /// 
        /// 
        public static bool IsGUID(string strGUID)
        {
            try
            {
                Regex GUIDPattern = new Regex("[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}");
                return GUIDPattern.IsMatch(strGUID.ToUpper());
            }
            catch
            {
                return false;
            }
        }

        /// 
        /// Variante 2
        /// 
        /// 
        /// 
        public static bool IsGUIDTPerformance(string strGUID)
        {
            if(!string.IsNullOrEmpty(strGUID))
            {
                Regex GUIDPattern = new Regex("[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}");
                return GUIDPattern.IsMatch(strGUID.ToUpper());
            }
            return false;
        }

        /// 
        /// Variante 3
        /// 
        /// 
        /// 
        public static bool IsGuid(object guidValue) 
        { 
            if (guidValue.GetType() == typeof(Guid)) 
                return true; 
            
            Guid guid; 
            
            try { 
                guid = new Guid(guidValue.ToString()); 
                return true; 
            } 
            catch 
            { 
                return false; 
            } 
        }

    }
}

Ergebnis:

Die Guid-Variante ist um ein Vielfaches schneller.

Variante 1: 3797 Millisekunden bei 100.000 Durchläufen
Variante 2: 3797 Millisekunden bei 100.000 Durchläufen
Variante 3: 198671 Millisekunden bei 100.000 Durchläufen

Also das genaue Gegenteil!?]]></description>
     <link><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></link>
</item>

<item>
     <title><![CDATA[Kommentar von Thomas]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></guid>
     <pubDate>Wed, 26 Apr 2006 15:48:24 GMT</pubDate>
     <description><![CDATA[Okay, überzeugt ;-) Trage es mal oben mit ein. Danke dir!]]></description>
     <link><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></link>
</item>

<item>
     <title><![CDATA[Kommentar von Jörg Uth]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></guid>
     <pubDate>Wed, 26 Apr 2006 15:43:22 GMT</pubDate>
     <description><![CDATA[Also habe das mal getestet:

Welcome to PerformaceTest:
Schleifengröße: 10000000
IsGUID(string)
Der erste Test dauerte: 94812,5 ms

IsGuid(object)
Der zweite Test dauerte: 24390,625 ms

Beim ersten Test lag die CPU bei mir bei ca. 60%
Beim zweiten bei ca. 50%

Also das es viermal schneller ist hätte ich spontan auch nicht gedacht! :)
]]></description>
     <link><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></link>
</item>

<item>
     <title><![CDATA[Kommentar von Thomas]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></guid>
     <pubDate>Wed, 26 Apr 2006 12:51:28 GMT</pubDate>
     <description><![CDATA[Das Ergebnis ist natürlich das Gleiche (wie immer, mehrere Wege nach Rom und so ...), aber ich würde mal spontan vermuten, dass diese Variante "teurer" im Sinne von aufwändiger ist, und damit etwas länger braucht. Kann mich aber auch täuschen.

Kann man jedenfalls beides verwenden :-)]]></description>
     <link><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></link>
</item>

<item>
     <title><![CDATA[Kommentar von Jörg Uth]]></title>
     <guid><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></guid>
     <pubDate>Wed, 26 Apr 2006 12:39:46 GMT</pubDate>
     <description><![CDATA[Habe da noch eine Alternative gefunden, diese verwendet aber das Guid-Object und kein Regex?

 1 public static bool IsGuid(object guidValue)
 2 {
 3     if(guidValue.GetType() == typeof(Guid))
 4         return true;
 5     
 6     Guid guid;
 7     try
 8     {
 9         guid = new Guid(guidValue.ToString());
10         return true;
11     }
12     catch
13     {
14         return false;
15     }
16 }]]></description>
     <link><![CDATA[http://www.snippetcenter.org/de/isguid-s59.aspx]]></link>
</item>



</channel>
</rss>
