Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: a62c12d362
Fetching contributors…

Cannot retrieve contributors at this time

364 lines (221 sloc) 12.748 kb
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Vivre avec Edge (ou quoi de neuf dans Rails Edge) #2 -amélioration des performances - Shiny happy people coding</title>
<meta name="author" content="Cyril Mougel">
<meta name="description" content="traduction de Vivre avec Edge #2 La première news Vivre avec edge a parlé des changement de l&#8217;API depuis Rails 2.1, et durant cette news, les &hellip;">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://blog.shingara.fr/vivre-avec-edge-ou-quoi-de-neuf-dans-rails-edge-2-amelioration-des-performances.html">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="Shiny happy people coding" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-11352302-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Shiny happy people coding</a></h1>
<h2>Codons avec le sourire</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:blog.shingara.fr" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div>
<article class="hentry" role="article">
<header>
<h1 class="entry-title">Vivre avec Edge (ou quoi de neuf dans Rails Edge) #2 -amélioration des performances</h1>
<p class="meta">
<time datetime="2008-06-29T00:00:00+02:00" pubdate data-updated="true">Jun 29<span>th</span>, 2008</time>
| <a href="#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>traduction de <a href="http://weblog.rubyonrails.com/2008/6/25/living-on-the-edge-or-what-s-new-in-edge-rails-2-performance-improvements">Vivre avec Edge #2</a></p>
<p>La <a href="http://weblog.rubyonrails.org/2008/6/20/living-on-the-edge-or-what-s-new-in-edge-rails-1-api-changes-and-performancetests">première news Vivre avec edge</a> a parlé des changement de l&#8217;<span class="caps">API</span> depuis Rails 2.1, et durant cette news, les <strong>améliorations de performances</strong> seront indiqué comme promis.</p>
<p>En avant&#8230;</p>
<h4>Les templates Erb plus rapide</h4>
<p>Jeremy Kemper a rendu le processus d&#8217;Erb plus efficace, spécialement les méthodes d&#8217;helper <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#M001724">concat</a> et <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#M001747">capture</a>.</p>
<p>Le &#8220;spécial&#8221; Erb <code>_erbout</code> a été remplacé par une variable d&#8217;instance qui permet ceci:</p>
<ul>
<li>Meilleur performance (mémoire) parce que <a href="http://www.ruby-doc.org/core/classes/Binding.html">bindings</a> ne pas pas longtemps autour</li>
<li>Moins de d&#8217;évaluation qui est généralement couteux.</li>
<li>Il n&#8217;y a pas besoin de séparer la variable <code>_erbout</code> quand vous remplacer un nouveau buffer (de string)</li>
<li>Le buffer est généralement disponible via une méthode <code>output_buffer</code> écriture et lecture (alors vous pouvez les overrider si vous le souhaitez)</li>
</ul>
<p>Changesets en relation: <a href="http://github.com/rails/rails/commit/933697a5fc5f4c56c4fd7fbbd31b8973df9c1054">933697a</a>
- <a href="http://github.com/rails/rails/commit/0bdb7d353b4ac6f5470884360f9a480a16bd709c">0bdb7d3</a>
- <a href="http://github.com/rails/rails/commit/4d4c8e298f5396e6b8ace0a10d7f991594aace2d">4d4c8e2</a></p>
<h4>Les helpers JavaScript et les partials sont plus rapide.</h4>
<p>L&#8217;initialisation des templates partial et des helpers Javascript ont été refactoré et optimisé pour une meilleure vite et efficacité grâce à Jeremy Kemper. Quelque optimisations de Jérémy ont été commité récement. Vérfiiez avec les <a href="http://github.com/rails/rails/commits/master">commits de Rails</a> (comme pour tout projet Open Source de qualité) - Vous apprendrez plein de chose.</p>
<p>Changesets en relation: <a href="http://github.com/rails/rails/commit/d7b3c3395fd7debc05923dba1cbea69d30899827">partials</a> &#8211; <a href="http://github.com/rails/rails/commit/f4ccc179530d5b9436da87d3c221dfa8fa89119a">JavaScript helpers</a></p>
<h4>Accélération de la méthode RecordIdentifier</h4>
<p>Le <a href="http://api.rubyonrails.org/classes/ActionController/RecordIdentifier.html">RecordIdentifier</a> est plus rapide avec la simple utilisation de memo-ization, réduisant ainsi l&#8217;utilisation des Inflections entre autre. Le RecordIdentifier est largement utilisé dans le cache des clé, des chemins des templates de partial, et dans la plus part des endroit où vous identifiez un model ActiveRecord sans le savoir avec ton id actuel.</p>
<p>Changesets en relation par Jeremy Kemper: <a href="http://github.com/rails/rails/commit/c1a98209da7422965f5dd4f475603b8a3cc887e4">c1a9820</a> &#8211; <a href="http://github.com/rails/rails/commit/566d717d783f56563cd602198be2177c972c9a81">566d717</a></p>
</div>
<footer>
<p class="meta">
<span class="byline author vcard">Posted by <span class="fn">Cyril Mougel</span></span>
<time datetime="2008-06-29T00:00:00+02:00" pubdate data-updated="true">Jun 29<span>th</span>, 2008</time>
</p>
<div class="sharing">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.shingara.fr/vivre-avec-edge-ou-quoi-de-neuf-dans-rails-edge-2-amelioration-des-performances.html" data-via="shingara" data-counturl="http://blog.shingara.fr/vivre-avec-edge-ou-quoi-de-neuf-dans-rails-edge-2-amelioration-des-performances.html" >Tweet</a>
<div class="g-plusone" data-size="medium"></div>
<div class="fb-like" data-send="true" data-width="450" data-show-faces="false"></div>
</div>
<p class="meta">
<a class="basic-alignment left" href="/le-monde-du-libre-fait-de-la-selection-meme-pour-les-fetes.html" title="Previous Post: Le monde du libre fait de la sélection même pour les fêtes">&laquo; Le monde du libre fait de la sélection même pour les fêtes</a>
<a class="basic-alignment right" href="/upgrade-de-typo-en-Typo-5-1-1.html" title="Next Post: Upgrade de typo en Typo-5.1.1">Upgrade de typo en Typo-5.1.1 &raquo;</a>
</p>
</footer>
</article>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/pourquoi-jai-arrete-decent-exposure.html">pourquoi j'ai arrêté decent_exposure</a>
</li>
<li class="post">
<a href="/tester-ses-vues-rabl.html">tester ses vues rabl</a>
</li>
<li class="post">
<a href="/vundle-ou-le-bundler-de-vim.html">vundle ou le bundler de vim</a>
</li>
<li class="post">
<a href="/dante-pour-mettre-du-daemon-dans-son-code.html">dante pour mettre du daemon dans son code</a>
</li>
<li class="post">
<a href="/moped-le-nouveau-driver-mongodb-pour-ruby.html">moped le nouveau driver mongodb pour ruby</a>
</li>
<li class="post">
<a href="/quiet-assets-le-limiteur-de-log.html">Quiet Assets le gem qui limite les logs</a>
</li>
<li class="post">
<a href="/telecharger-fichier-de-basecamp.html">Récupération de ses fichiers sur basecamp</a>
</li>
<li class="post">
<a href="/translate-on-mongoid.html">Localize avec mongoid</a>
</li>
<li class="post">
<a href="/mailtrap-l-aide-au-staging.html">Mailtrap l'aide au staging</a>
</li>
<li class="post">
<a href="/une-journee-dediee-i-mongodb.html">Une journée dédiée à MongoDB</a>
</li>
</ul>
</section>
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating...</li>
</ul>
<a href="https://github.com/shingara">@shingara</a> on GitHub
<script type="text/javascript">
$.domReady(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'shingara',
count: 10,
skip_forks: false,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
<section>
<h1>Latest Tweets</h1>
<ul id="tweets">
<li class="loading">Status updating...</li>
</ul>
<script type="text/javascript">
$.domReady(function(){
getTwitterFeed("shingara", 4, false);
});
</script>
<script src="/javascripts/twitter.js" type="text/javascript"> </script>
<a href="http://twitter.com/shingara" class="twitter-follow-button" data-show-count="true">Follow @shingara</a>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright &copy; 2012 - Cyril Mougel -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'shinydevblog';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#appId=212934732101925&xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<script type="text/javascript">
(function() {
var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
script.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
})();
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>
Jump to Line
Something went wrong with that request. Please try again.