{"id":798,"date":"2014-12-24T01:44:40","date_gmt":"2014-12-23T23:44:40","guid":{"rendered":"http:\/\/dev.bratched.fr\/fr\/?p=798"},"modified":"2019-07-18T22:46:10","modified_gmt":"2019-07-18T20:46:10","slug":"image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2","status":"publish","type":"post","link":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/","title":{"rendered":"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2"},"content":{"rendered":"<h1>Introduction<\/h1>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench01.png\">&nbsp;<\/a><img decoding=\"async\" loading=\"lazy\" class=\"  alignnone wp-image-801\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/wp_ss_20141223_0001-e1419724812891-1024x933.png\" alt=\"wp_ss_20141223_0001\" width=\"480\" height=\"437\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/wp_ss_20141223_0001-e1419724812891-1024x933.png 1024w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/wp_ss_20141223_0001-e1419724812891-300x273.png 300w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/wp_ss_20141223_0001-e1419724812891-768x700.png 768w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/wp_ss_20141223_0001-e1419724812891.png 1080w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/p>\n<p>Cet article traite des r\u00e9sultats des diff\u00e9rentes m\u00e9thodes pour lire une image provenant d&rsquo;un site Http.<\/p>\n<p>Les diff\u00e9rentes impl\u00e9mentations ont \u00e9t\u00e9 d\u00e9crites dans l&rsquo;article<\/p>\n<p><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">Image depuis http avec C# Xaml &#8211; comparatifs et performances<\/a>.<\/p>\n<h1>Mesures<\/h1>\n<p>L&rsquo;image \u00e9talon fait 19ko et mesure 400&#215;240 pixels. Elle est pr\u00e9sente notamment sur les serveurs de Bing \u00e0 l&rsquo;adresse suivante :<\/p>\n<p>http:\/\/www.bing.com\/az\/hprichbg\/rb\/ChristmasMarketNurnberg_FR-FR11351563819_1280x768.JPG<\/p>\n<p>Le premier test va charger 10 fois la m\u00eame image suivante :<\/p>\n<p><!--more--><\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/ChristmasMarketNurnberg_FR-FR11351563819_400x240.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-800\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/ChristmasMarketNurnberg_FR-FR11351563819_400x240.jpg\" alt=\"ChristmasMarketNurnberg_FR-FR11351563819_400x240\" width=\"400\" height=\"240\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/ChristmasMarketNurnberg_FR-FR11351563819_400x240.jpg 400w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/ChristmasMarketNurnberg_FR-FR11351563819_400x240-300x180.jpg 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<p>Afin d&rsquo;\u00e9viter les mises en cache http d&rsquo;\u00e9changes, l&rsquo;url demand\u00e9e est accompagn\u00e9e de param\u00e8tres fictifs dans la requ\u00eate.<\/p>\n<p>Exemple : http:\/\/192.168.0.47\/ChristmasMarketNurnberg_FR-FR11351563819_400x240.jpg?test={0} o\u00f9 {0} sera remplac\u00e9 lors des tests par des donn\u00e9es uniques avec l&rsquo;instruction<\/p>\n<p><span style=\"color: #2b91af;font-family: Consolas;font-size: small\">String<\/span><span style=\"font-family: Consolas;font-size: small\">.Format(url, <\/span><span style=\"color: #2b91af;font-family: Consolas;font-size: small\">DateTime<\/span><span style=\"font-family: Consolas;font-size: small\">.Now.Ticks)<\/span><\/p>\n<p>Une m\u00e9thode g\u00e9n\u00e9rique de benchmark a \u00e9t\u00e9 r\u00e9alis\u00e9e. A titre indicatif, voici la m\u00e9thode principale.<\/p>\n<pre class=\"lang:default decode:true\">public static async Task BenchmarkTest(this IBenchmarkResult result, Func&lt;string, Task&lt;object&gt;&gt; test, string url, string title, string comment)\n{\n    await semaphore.WaitAsync();\n    try\n    {\n        string resourceName = String.Empty;\n        _buildLog.AppendLine(\"-----------------------\");\n        _buildLog.AppendLine(String.Format(\"Test {0} (x{1})\", title, _nbBench));\n        _buildLog.AppendLine(String.Format(\"-- {0} \", comment));\n        result.BenchmarkLog= _buildLog.ToString();\n        _startTime = DateTime.Now;\n        _buildLog.AppendLine(String.Format(\"Start {0:HH:mm:ss}\", _startTime));\n        int nb = 0;\n        int index = 0;\n        while (nb &gt; 0 || index &lt;= _nbBench)\n        {\n            index++;\n            if (index &lt;= _nbBench)\n            {\n                nb++;\n                {\n                    System.Diagnostics.Debug.WriteLine(\"Add test {0}, index {1}\", nb, index);\n                    result.Image = await test(String.Format(url, DateTime.Now.Ticks));\n                    nb--;\n                    System.Diagnostics.Debug.WriteLine(\"remove test {0}\", nb);\n                }\n            }\n        }\n        _buildLog.AppendLine(String.Format(\"Result {0} = {1:0.000} s\", title, (DateTime.Now - _startTime).TotalSeconds));\n        result.BenchmarkLog = _buildLog.ToString();\n    }\n    finally\n    {\n        semaphore.Release();\n    }\n}<\/pre>\n<ul>\n<li>&nbsp;Le s\u00e9maphore sert \u00e0 \u00e9viter les conflits<\/li>\n<li>La m\u00e9thode \u00e0 tester est pass\u00e9e dans la Func Test<\/li>\n<li>La boucle lance les tests \u00e0 la suite (10x pour ces tests)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Pour rappel, les m\u00e9thodes test\u00e9es sont les suivantes :<\/p>\n<ol>\n<li><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">Http client et DataWriter <\/a>: implementation classique avec le DataWriter<\/li>\n<li><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">Http Client et AsRandomAccessStream<\/a>&nbsp; : utilisation du AsRandomAccessStream (W8.1)<\/li>\n<li><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">HttpClient et AsRandomAccessStream&nbsp;avec ConfigureAwait<\/a> : optimisation avec ConfigureAwait(false)<\/li>\n<li><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">HttpClient et MemoryStream dans une autre&nbsp;Task<\/a>. Le memoryStream est trait\u00e9 \u00e0 part dans une t\u00e2che asynchrone<\/li>\n<li><span style=\"color: #0088cc\">HttpRequest et MemoryStream dans une autre&nbsp;Task<\/span> Le HttpRequest est utilis\u00e9 \u00e0 la place du HttpClient<\/li>\n<li><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">Actions \u00e0 la place du Async \/ Await<\/a> : Utilisation des Actions \u00e0 la place du async\/await<\/li>\n<li><span style=\"color: #0088cc\">HttpWebRequest et AsRandomAccessStream :&nbsp;<\/span><span style=\"color: #0088cc\">&nbsp;<\/span><\/li>\n<li><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">HttpWebRequest et AsRandomAccessStream&nbsp;avec Action<\/a> : comme la 6 mais AsRandomAccessStream remplace la Task du MemoryStream<\/li>\n<li><a title=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 1\" href=\"http:\/\/dev.bratched.fr\/fr\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-1\/\">HttpWebRequest, AsRandom Access Stream sans ConfigureAwait <\/a>: Idem que la 2 mais avec HttpWebRequest<\/li>\n<\/ol>\n<h1>Test en local<\/h1>\n<p>Le test est r\u00e9alis\u00e9 sur un r\u00e9seau local, via Wifi sur un Lumia 930. Les tests ont \u00e9t\u00e9 m\u00e9lang\u00e9s (pour ne pas toujours commenc\u00e9 par le premier)<\/p>\n<p>Le serveur est situ\u00e9 sur le r\u00e9seau local.<\/p>\n<p>Le tableau repr\u00e9sente les valeurs en ms pour chaque s\u00e9rie de tests.<\/p>\n<p>Les moyennes sont sur la premi\u00e8re ligne.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench01.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-803 size-full\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench01.png\" alt=\"bench01\" width=\"576\" height=\"246\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench01.png 576w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench01-300x128.png 300w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><\/a><\/p>\n<p>On peut d\u00e9j\u00e0 voir de gros \u00e9carts entre la premi\u00e8re m\u00e9thode traditionnelle et la 8, nous avons presque des temps qui sont divis\u00e9s par 2.<\/p>\n<p>On observe \u00e9galement que<\/p>\n<ul>\n<li>Le HttpClient est bien plus lent que le HttpRequest (ce n&rsquo;est pas une surprise)<\/li>\n<li>Les m\u00e9thodes utilisant des actions sont&nbsp;les plus rapides (pourquoi reste&nbsp;le grand&nbsp;myst\u00e8re inexpliqu\u00e9)<\/li>\n<\/ul>\n<h1>Test grandeur nature<\/h1>\n<p>Le test a ensuite \u00e9t\u00e9 r\u00e9alis\u00e9 sur des connections 3G, 4G, Wifi avec un serveur distant.<\/p>\n<p>Le serveur utilis\u00e9 est le serveur de Bing. Les temps de connexions sont bien s\u00fbr plus variables et voici les r\u00e9sultats sur une connexion H+ r\u00e9seau orange avec le 930.<\/p>\n<p>Les moyennes sont toujours&nbsp;sur la premi\u00e8re ligne.<\/p>\n<p>Peu de diff\u00e9rences avec les tests sur r\u00e9seau local.<\/p>\n<p>Les benchmarks 3, 6, 8 et 9 sont les meilleurs et seront conserv\u00e9s pour les autres tests<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench02.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-804 size-full\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench02.png\" alt=\"bench02\" width=\"726\" height=\"407\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench02.png 726w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench02-300x168.png 300w\" sizes=\"(max-width: 726px) 100vw, 726px\" \/><\/a><\/p>\n<p>Le test suivant est r\u00e9alis\u00e9 sur un 920, toujours sur un r\u00e9seau H+.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/Bench3.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-805 size-full\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/Bench3.png\" alt=\"Bench3\" width=\"321\" height=\"281\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/Bench3.png 321w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/Bench3-300x263.png 300w\" sizes=\"(max-width: 321px) 100vw, 321px\" \/><\/a><\/p>\n<p>Sur un Lumia&nbsp;920,&nbsp;les m\u00e9thodes 6 et 8 sortent&nbsp;du lot avec un gain d&rsquo;une dizaine de pourcent.<\/p>\n<p>J&rsquo;ai pu faire des tests \u00e0 plusieurs reprises sur des r\u00e9seaux allant de la 4g au Edge et ce sont toujours ces 2&nbsp;impl\u00e9mentations qui sortent du lot.<\/p>\n<h1>Conclusion<\/h1>\n<p>Dans mes Apps, je vais utiliser l&rsquo;impl\u00e9mentation 8 qui reste simple (compar\u00e9e \u00e0 la solution 6), compr\u00e9hensible et une des plus performantes.<\/p>\n<p>Il serait int\u00e9ressant de voir \u00e9galement&nbsp;si des t\u00e9l\u00e9phones avec un processeur un peu moins performant tel que le Lumia 520 enregistrent les m\u00eames \u00e9carts.<\/p>\n<p>Le code source sera publi\u00e9 tr\u00e8s prochainement.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction &nbsp; Cet article traite des r\u00e9sultats des diff\u00e9rentes m\u00e9thodes pour lire une image provenant d&rsquo;un site Http. Les diff\u00e9rentes impl\u00e9mentations ont \u00e9t\u00e9 d\u00e9crites dans l&rsquo;article Image depuis http avec C# Xaml &#8211; comparatifs et performances. Mesures L&rsquo;image \u00e9talon fait 19ko et mesure 400&#215;240 pixels. Elle est pr\u00e9sente notamment sur les serveurs de Bing \u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":803,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,62,63],"tags":[68,69,83,70,77,79],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Bratched\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Bratched.fr | On parle Windows, C#, Apple, Android, Js, ...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2 | Bratched.fr\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2014-12-23T23:44:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-07-18T20:46:10+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2 | Bratched.fr\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#article\",\"name\":\"Image depuis HTTP avec C# XAML \\u2013 Comparatifs et Performances \\u2013 Partie 2 | Bratched.fr\",\"headline\":\"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2\",\"author\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2014\\\/12\\\/bench01.png\",\"width\":576,\"height\":246},\"datePublished\":\"2014-12-24T01:44:40+01:00\",\"dateModified\":\"2019-07-18T22:46:10+02:00\",\"inLanguage\":\"fr-FR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#webpage\"},\"articleSection\":\"Universal Apps, Windows 8, Windows Phone, async, await, Benchmark, BitmapImage, HTTP, HttpRequest\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bratched.com\\\/fr\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/#listItem\",\"name\":\"Universal Apps\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/#listItem\",\"position\":2,\"name\":\"Universal Apps\",\"item\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#listItem\",\"name\":\"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#listItem\",\"position\":3,\"name\":\"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/#listItem\",\"name\":\"Universal Apps\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#organization\",\"name\":\"Bratched.fr\",\"description\":\"On parle Windows, C#, Apple, Android, Js, ...\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/\",\"name\":\"Bratched\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/05352dcd40ece2c42e5ae2dd683b460b?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Bratched\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#webpage\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/\",\"name\":\"Image depuis HTTP avec C# XAML \\u2013 Comparatifs et Performances \\u2013 Partie 2 | Bratched.fr\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2014\\\/12\\\/bench01.png\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#mainImage\",\"width\":576,\"height\":246},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/12\\\/24\\\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\\\/#mainImage\"},\"datePublished\":\"2014-12-24T01:44:40+01:00\",\"dateModified\":\"2019-07-18T22:46:10+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/\",\"name\":\"Bratched.fr\",\"description\":\"On parle Windows, C#, Apple, Android, Js, ...\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2 | Bratched.fr","description":"","canonical_url":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#article","name":"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2 | Bratched.fr","headline":"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2","author":{"@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author"},"publisher":{"@id":"https:\/\/bratched.com\/fr\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench01.png","width":576,"height":246},"datePublished":"2014-12-24T01:44:40+01:00","dateModified":"2019-07-18T22:46:10+02:00","inLanguage":"fr-FR","mainEntityOfPage":{"@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#webpage"},"isPartOf":{"@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#webpage"},"articleSection":"Universal Apps, Windows 8, Windows Phone, async, await, Benchmark, BitmapImage, HTTP, HttpRequest"},{"@type":"BreadcrumbList","@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr#listItem","position":1,"name":"Home","item":"https:\/\/bratched.com\/fr","nextItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/#listItem","name":"Universal Apps"}},{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/#listItem","position":2,"name":"Universal Apps","item":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/","nextItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#listItem","name":"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#listItem","position":3,"name":"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2","previousItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/#listItem","name":"Universal Apps"}}]},{"@type":"Organization","@id":"https:\/\/bratched.com\/fr\/#organization","name":"Bratched.fr","description":"On parle Windows, C#, Apple, Android, Js, ...","url":"https:\/\/bratched.com\/fr\/"},{"@type":"Person","@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author","url":"https:\/\/bratched.com\/fr\/author\/adminced\/","name":"Bratched","image":{"@type":"ImageObject","@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/05352dcd40ece2c42e5ae2dd683b460b?s=96&d=mm&r=g","width":96,"height":96,"caption":"Bratched"}},{"@type":"WebPage","@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#webpage","url":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/","name":"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2 | Bratched.fr","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/bratched.com\/fr\/#website"},"breadcrumb":{"@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#breadcrumblist"},"author":{"@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author"},"creator":{"@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/12\/bench01.png","@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#mainImage","width":576,"height":246},"primaryImageOfPage":{"@id":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/#mainImage"},"datePublished":"2014-12-24T01:44:40+01:00","dateModified":"2019-07-18T22:46:10+02:00"},{"@type":"WebSite","@id":"https:\/\/bratched.com\/fr\/#website","url":"https:\/\/bratched.com\/fr\/","name":"Bratched.fr","description":"On parle Windows, C#, Apple, Android, Js, ...","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/bratched.com\/fr\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"Bratched.fr | On parle Windows, C#, Apple, Android, Js, ...","og:type":"article","og:title":"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2 | Bratched.fr","og:url":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/","article:published_time":"2014-12-23T23:44:40+00:00","article:modified_time":"2019-07-18T20:46:10+00:00","twitter:card":"summary","twitter:title":"Image depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2 | Bratched.fr"},"aioseo_meta_data":{"post_id":"798","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[],"defaultGraph":"","defaultPostTypeGraph":""},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 02:51:47","updated":"2025-06-04 03:21:15","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bratched.com\/fr\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/\" title=\"Universal Apps\">Universal Apps<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tImage depuis HTTP avec C# XAML \u2013 Comparatifs et Performances \u2013 Partie 2\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/bratched.com\/fr"},{"label":"Universal Apps","link":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/"},{"label":"Image depuis HTTP avec C# XAML &#8211; Comparatifs et Performances &#8211; Partie 2","link":"https:\/\/bratched.com\/fr\/2014\/12\/24\/image-depuis-http-avec-c-xaml-comparatifs-et-performances-partie-2\/"}],"_links":{"self":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/798"}],"collection":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/comments?post=798"}],"version-history":[{"count":1,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/798\/revisions"}],"predecessor-version":[{"id":849,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/798\/revisions\/849"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/media\/803"}],"wp:attachment":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/media?parent=798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/categories?post=798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/tags?post=798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}