Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2e9c43658e374d290a2de15d25134ac8 > files > 912

db4o-doc-8.0-1.fc15.i686.rpm

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="2" MadCap:lastHeight="120" MadCap:lastWidth="624" MadCap:disableMasterStylesheet="true" MadCap:tocPath="Tuning|Main Operations Performance|Update Performance" MadCap:InPreviewMode="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" MadCap:PathToHelpSystem="../../../../" MadCap:HelpSystemFileName="index.xml" MadCap:SearchType="Stem">
    <head><title>Commit Frequency	</title>
        <script type="text/javascript">/* <![CDATA[ */
window.onload = function(){
	var pathToFlash = $('html').attr('MadCap:PathToHelpSystem') + 'Content/Resources/Code/ZeroClipboard.swf';
	ZeroClipboard.setMoviePath(pathToFlash);
			
	function bindToClipBord(element,content){
		var clip = new ZeroClipboard.Client();
		clip.setText(content);
		clip.glue(element);
	};
		
	if(location.protocol==='file:'){
		$('.copylink-marker').remove();
	} else{
			$('.copylink-marker').each(function(){
				var text = $(this).parent().parent().children('.prettyprint').html();
				$(this).hover(function(){
					bindToClipBord(this,text);
				},
				function(){});
			});	
	}		
	prettyPrint();	
};
                /* ]]> */</script>
        <link href="../../../SkinSupport/MadCap.css" rel="stylesheet" />
        <link href="../../../Resources/Stylesheets/OnlineStyle.css" rel="stylesheet" />
        <script src="../../../Resources/Code/prettify.js">
        </script>
        <script src="../../../Resources/Code/lang-vb.js">
        </script>
        <script src="../../../Resources/Code/jquery.min.js">
        </script>
        <script src="../../../Resources/Code/ZeroClipboard.js">
        </script>
        <script src="../../../SkinSupport/MadCapAll.js" type="text/javascript">
        </script>
    </head>
    <body>
        <p class="MCWebHelpFramesetLink" style="display: none;"><a href="../../../../index_CSH.html#tuning/main_operations_performance/update_performance/commit_frequency.htm" style="">Open topic with navigation</a>
        </p>
        <div class="MCBreadcrumbsBox"><span class="MCBreadcrumbsPrefix">You are here: </span><a class="MCBreadcrumbsLink" href="../../../tuning.htm">Tuning</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../../main_operations_performance.htm">Main Operations Performance</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../update_performance.htm">Update Performance</a><span class="MCBreadcrumbsDivider"> &gt; </span><span class="MCBreadcrumbs">Commit Frequency</span>
        </div>
        <p>
            <script type="text/javascript">/*<![CDATA[*/document.write('<a href="' + location.href +'">');
				document.write("Direct Link");
			document.write('</a>');/*]]>*/</script>
        </p>
        <p>
        </p>
        <h1>Commit Frequency</h1>
        <p>Commit frequency has a direct impact on db4o performance.
Commit is an expensive operation due to physical disk access. However, commit
is also the only way to ensure that the whole transaction is stored safely on
the disk and no data loss will occur in case of unexpected system failure.</p>
        <p>The following test shows how commit frequency influences the
performance on update:</p>
        <p MadCap:conditions="Global.Primary:java" />
        <p MadCap:conditions="Primary..NET">
            <pre class="prettyprint" xml:space="preserve">UpdatePerformanceBenchmark.cs: RunCommitTest
private void RunCommitTest()
         {
            System.Console.WriteLine(
"Update test with different Commit frequency");

            InitForCommitTest();

            Clean();
            System.Console.WriteLine("Test Update all:");
            Open(ConfigureForCommitTest());
            Store();
            UpdateItems(_count);
            Close();



            Clean();
            System.Console.WriteLine(
"Test Update all with Commit after each " + _commitInterval + " objects:");
            Open(ConfigureForCommitTest());
            Store();
            UpdateWithCommit(_count);
            Close();


        }</pre>
            <pre class="prettyprint" xml:space="preserve">UpdatePerformanceBenchmark.cs: ConfigureForCommitTest
private IConfiguration ConfigureForCommitTest()
         {
            IConfiguration config = Db4oFactory.NewConfiguration();
            // the Commit information is physically written 
            // and in the correct order
            config.FlushFileBuffers(true);
            return config;
        }</pre>
            <pre class="prettyprint" xml:space="preserve">UpdatePerformanceBenchmark.cs: UpdateItems
private void UpdateItems(int count)
         {
            StartTimer();
            IObjectSet result = objectContainer.QueryByExample(null);

            for (int i = 0; i &lt; count; i++)
             {
                if (result.HasNext())
                 {
                    Item item = (Item)result.Next();
                    item._name = "Updated";
                    Update(item);
                }
                else
                 {
                    count = i;
                    break;
                }
            }
            StopTimer("Updated " + count + " items");
        }</pre>
            <pre class="prettyprint" xml:space="preserve">UpdatePerformanceBenchmark.cs: UpdateWithCommit
private void UpdateWithCommit(int count)
         {
            StartTimer();
            IObjectSet result = objectContainer.QueryByExample(null);
            int j = 0;
            for (int i = 0; i &lt; count; i++)
             {
                if (result.HasNext())
                 {
                    Item item = (Item)result.Next();
                    item._name = "Updated";
                    Update(item);
                    if (j &gt;= _commitInterval)
                     {
                        j = 0;
                        objectContainer.Commit();
                    }
                    else
                     {
                        j++;
                    }
                }
                else
                 {
                    count = i;
                    break;
                }
            }
            StopTimer("Updated " + count + " items ");
        }</pre>
        </p>
        <p MadCap:conditions="Global.Primary:net" />
        <p>The results:</p>
        <p><i>Update test with different commit frequency</i>
        </p>
        <p><i>Test update all:</i>
        </p>
        <p><i>Store 30000 objects: 2661ms</i>
        </p>
        <p><i>Updated 10000 items: 1402ms</i>
        </p>
        <p><i>Test update all with commit after each 1000 objects:</i>
        </p>
        <p><i>Store 30000 objects: 2250ms</i>
        </p>
        <p><i>Updated 10000 items : 2812ms</i>
        </p>
        <p MadCap:conditions="Primary.Online">Download example code:</p>
        <p MadCap:conditions="Primary.Online">
            <MadCap:conditionalText MadCap:conditions="Primary..NET,Primary.c#,Primary.All languages"><a href="updateperformancecs.zip">c# </a>
            </MadCap:conditionalText>
        </p>
        <script type="text/javascript" src="../../../SkinSupport/MadCapBodyEnd.js">
        </script>
    </body>
</html>