<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reference.pcre.pattern.syntax.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'regexp.reference.performances.php',
    1 => 'Başarım',
    2 => 'Başarım',
  ),
  'up' => 
  array (
    0 => 'reference.pcre.pattern.syntax.php',
    1 => 'Şablon S&ouml;zdizimi',
  ),
  'prev' => 
  array (
    0 => 'regexp.reference.recursive.php',
    1 => 'İ&ccedil; i&ccedil;e şablonlar',
  ),
  'next' => 
  array (
    0 => 'reference.pcre.pattern.modifiers.php',
    1 => 'Şablon Değiştiricileri',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/pcre/pattern.syntax.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="regexp.reference.performances" class="section">
  <h2 class="title">Başarım</h2>
  <p class="para">
   Şablonların içindeki bazı ögeler diğerlerine göre daha verimli
   olabilir. Örneğin, [aeiou] gibi bir karakter sınıfı, (a|e|i|o|u) gibi
   bir olasılık kümesine göre daha verimlidir. Genelde, gerekli davranışı
   sergileyen en basit oluşum normal olarak en verimli oluşumdur. Jeffrey
   Friedl&#039;ın kitabı, düzenli ifadelerin verimini arttırmak için en
   iyilenmeleriyle ilgili bir çok inceleme içerir.
  </p>
  <p class="para">
   Bir şablon .* ile başlıyorsa ve <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a> seçeneği
   etkinse, şablon, sadece eşleşmeye konu dizgenin başlangıcı ile
   eşleşebileceğinden, örtük olarak PCRE tarafından demirlenir. Bununla
   birlikte, <a href="reference.pcre.pattern.modifiers.php" class="link">
   PCRE_DOTALL</a> seçeneği etkin değilse, nokta işleci satırsonu
   karakteri ile eşleşmeyeceğinden ve eşleşmeye konu dizge çok sayıda
   satırsonu içeriyorsa şablon dizgenin başlangıcından başka diğer
   satırsonu karakterlerinin sonrası ile de eşleşeceğinden PCRE bu en
   iyilemeyi yapamaz. Örneğin, <code class="literal">(.*) ikinci</code> şablonu, ilk
   yakalanan alt dizge &quot;ve&quot; olmak üzere &quot;birinci\nve ikinci&quot; dizgesiyle
   eşleşir (\n satırsonu karakteridir). PCRE bunu yaparken, eşleşmeye konu
   dizgedeki her satırsonu karakterinden sonra eşleşme başlatmayı
   tekrarlamak zorundadır.
  </p>
  <p class="para">
   Böyle bir şablonu satırsonu karakteri içermeyen bir dizgeyle
   eşleştirmek için kullanıyorsanız en iyi başarımı
   <a href="reference.pcre.pattern.modifiers.php" class="link">PCRE_DOTALL</a>
   seçeneğini etkin kılarak veya demirlemeyi açıkça belirtmek için şablonu
   ^.*  ile başlatarak sağlayabilirsiniz. Bu, PCRE&#039;yi her satırsonunda
   eşleşmeyi yeni baştan başlatmaktan kurtarır.
  </p>
  <p class="para">
   İç içe sonsuz sayıda yineleme içeren şablonlara karşı dikkatli olun.
   Kendileriyle eşleşmeyen bir dizgeye rastladıklarında sonuç almak çok
   uzun sürebilir. Örneğin <code class="literal">(a+)*</code> şablonunu ele alalım.
 </p>
 <p class="para">
   Bu şablon &quot;aaaa&quot; dizgesiyle 33 farklı yolla eşleşir ve dizge uzadıkça
   bu sayı büyük bir hızla artar. (* yinelemesi 0, 1, 2, 3, 4 kere eşleşir
   ve sıfırdan farklı bütün durumlarda + yinelemeleri farklı kereler
   eşleşebilir.) Şablonun kalanı böyle olduğu takdirde şablonun tamamıyla
   eşleşme mümkün olmayacaktır. PCRE kural olarak olası her çeşit
   yinelemeyi deneyeceğinden bu işlem oldukça uzun bir zaman alacaktır.
 </p>
 <p class="para">
   Şablonun ardına, <code class="literal">(a+)*b</code> şeklinde özel olmayan bir
   karakter getirilmesi gibi basit çözümlerle bir en iyileme mümkündür.
   Standart eşleştirme işlemlerine girişmeden önce, PCRE eşleşmeye konu
   dizgenin sonlarına doğru bir &quot;b&quot; varlığını araştırır; bulamazsa, hemen
   eşleşmenin başarısız olduğunu bildirir. Ancak böyle arda eklenebilecek
   özel olmayan bir karakterin yokluğunda bu en iyileme kullanılamaz.
   <code class="literal">(a+)*\d</code> şablonunun davranışını yukarıdaki şablonla
   karşılaştırarak farkı görebilirsiniz. Birincisi sadece &quot;a&quot;lardan oluşan
   bir satıra uygulandığında hemen her durumda daima anında başarısız
   olurken ikincisinin başarısızlığı dizge 20 karakterden uzun olduğunda
   farkedilebilecek kadar uzun bir süre sonra gerçekleşir.
  </p>
 </div><?php manual_footer($setup); ?>