<?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>Local And Remote Modes </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/local_and_remote_modes.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"> > </span><a class="MCBreadcrumbsLink" href="../../main_operations_performance.htm">Main Operations Performance</a><span class="MCBreadcrumbsDivider"> > </span><a class="MCBreadcrumbsLink" href="../insert_performance.htm">Insert Performance</a><span class="MCBreadcrumbsDivider"> > </span><span class="MCBreadcrumbs">Local And Remote Modes</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>Local And Remote Modes</h1> <p>Of course local and client/server modes cannot give the same performance and it is difficult to say what will be the impact of inserting the objects over the network, as the network conditions can vary. </p> <p>You can use the following test to compare the performance on your network:</p> <p MadCap:conditions="Global.Primary:java" /> <p MadCap:conditions="Primary..NET"> <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: RunClientServerTest private void RunClientServerTest() { ConfigureClientServer(); Init(); Clean(); System.Console.WriteLine("Storing " + _count + " objects of depth " + _depth + " locally:"); Open(); Store(); Close(); InitForClientServer(); Clean(); System.Console.WriteLine("Storing " + _count + " objects of depth " + _depth + " remotely:"); Open(); Store(); Close(); }</pre> <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: ConfigureClientServer private void ConfigureClientServer() { IConfiguration config = Db4oFactory.Configure(); config.LockDatabaseFile(false); config.WeakReferences(false); config.FlushFileBuffers(false); config.ClientServer().SingleThreadedClient(true); }</pre> <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: Init private void Init() { _count = 10000; _depth = 3; _isClientServer = false; }</pre> <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: InitForClientServer private void InitForClientServer() { _count = 10000; _depth = 3; _isClientServer = true; }</pre> <pre class="prettyprint" xml:space="preserve">InsertPerformanceBenchmark.cs: Store private void Store() { StartTimer(); for (int i = 0; i < _count; i++) { Item item = new Item("load", null); for (int j = 1; j < _depth; j++) { item = new Item("load", item); } objectContainer.Store(item); } objectContainer.Commit(); StopTimer("Store " + TotalObjects() + " objects"); }</pre> </p> <p MadCap:conditions="Global.Primary:net" /> <p>With a good and reliable network you can use the same methods to improve the insert performance as in a local mode. However, if your network connection is not always perfect you will need to use commits more often to ensure that the objects do not get lost. See the <a href="commit_frequency.htm">next chapter</a> for recommendations on commit performance.</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="../performancecs.zip">c# </a> </MadCap:conditionalText> </p> <script type="text/javascript" src="../../../SkinSupport/MadCapBodyEnd.js"> </script> </body> </html>