Sophie

Sophie

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

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|Insert 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/insert_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="../insert_performance.htm">Insert 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 is an expensive operation as it needs to physically
access hard drive several times and write changes. However, only commit can
ensure that the objects are actually stored in the database and won't be lost.</p>
        <p>The following test compares different commit frequencies
(one commit for all objects or several commits after a specified amount of
objects). The test runs against a hard drive:</p>
        <p MadCap:conditions="Global.Primary:java" />
        <p MadCap:conditions="Primary..NET">
            <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: RunCommitTest
private void RunCommitTest()
         {

            ConfigureForCommitTest();
            InitForCommitTest();

            Clean();
            System.Console.WriteLine("Storing objects as a bulk:");
            Open();
            Store();
            Close();

            Clean();
            System.Console.WriteLine("Storing objects with commit after each " 
+ _commitInterval + " objects:");
            Open();
            StoreWithCommit();
            Close();
        }</pre>
            <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: ConfigureForCommitTest
private void ConfigureForCommitTest()
         {
            IConfiguration config = Db4oFactory.Configure();
            config.LockDatabaseFile(false);
            config.WeakReferences(false);
            // FlushFileBuffers should be set to true to ensure that
            // the commit information is physically written 
            // and in the correct order
            config.FlushFileBuffers(false);
        }</pre>
            <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: InitForCommitTest
private void InitForCommitTest()
         {
            _count = 100000;
            _commitInterval = 10000;
            _depth = 3;
            _isClientServer = false;
        }</pre>
            <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: Store
private void Store()
         {
            StartTimer();
            for (int i = 0; i &lt; _count; i++)
             {
                Item item = new Item("load", null);
                for (int j = 1; j &lt; _depth; j++)
                 {
                    item = new Item("load", item);
                }
                objectContainer.Store(item);
            }
            objectContainer.Commit();
            StopTimer("Store " + TotalObjects() + " objects");
        }</pre>
            <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: StoreWithCommit
private void StoreWithCommit()
         {
            StartTimer();
            int k = 0;
            while (k &lt; _count)
             {
                for (int i = 0; i &lt; _commitInterval; i++)
                 {
                    Item item = new Item("load", null);
                    k++;
                    for (int j = 1; j &lt; _depth; j++)
                     {
                        item = new Item("load", item);
                    }
                    objectContainer.Store(item);
                }
                objectContainer.Commit();
            }
            objectContainer.Commit();
            StopTimer("Store " + TotalObjects() + " objects");
        }</pre>
        </p>
        <p MadCap:conditions="Global.Primary:net" />
        <p>The following results were achieved for the
<a href="../insert_performance.htm">testing configuration</a>:</p>
        <p MadCap:conditions="Global.Primary:java" />
        <p MadCap:conditions="Primary..NET">
            <p>.NET:</p>
            <p>Storing objects as a bulk:</p>
            <p>Store 300000 objects: 17748ms</p>
            <p>Storing objects with commit after each 10000 objects:</p>
            <p>Store 300000 objects: 18163ms</p>
        </p>
        <p MadCap:conditions="Global.Primary:net" />
        <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="../performancecs.zip">c# </a>
            </MadCap:conditionalText>
        </p>
        <script type="text/javascript" src="../../../SkinSupport/MadCapBodyEnd.js">
        </script>
    </body>
</html>