<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		
		<title>kpsol.com: Latest News</title>
		<link>http://www.kpsol.com/</link>
		<description>Latest News</description>
		<language>en</language>
		<image>
			<title>kpsol.com: Latest News</title>
			<url>http://www.kpsol.com/fileadmin/tt_news_article.gif</url>
			<link>http://www.kpsol.com/</link>
			<width></width>
			<height></height>
			<description>Latest News</description>
		</image>
		<generator>TYPO3 - get.content.right</generator>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		
		
		
		<lastBuildDate>Fri, 09 Jul 2010 18:58:00 +0100</lastBuildDate>
		
		
		<item>
			<title>Knowledge Transfer | Customer Service Software | CRM Knowledge Base</title>
			<link>http://www.kpsol.com/news/news/article/knowledge-transfer-customer-service-software-crm-knowledge-base/index.html</link>
			<description>knowledge transfer, customer service software, CRM knowledge base</description>
			<content:encoded><![CDATA[<p class="bodytext"><a href="http://www.kpsol.com/solutions/index.html">CRM knowledge base</a> and the time taken for optimisation</p>
<p class="bodytext">Sometimes, the time taken to undertake optimisation in itself may be an issue.</p>
<p class="bodytext">Optimising existing code in <a href="http://www.kpsol.com">customer service software</a> usually does not add new features, and worse, it might add new bugs in previously working code (as any change might). Because manually optimised code might sometimes have less 'readability' than unoptimised code, optimisation might impact maintainability of it also. Optimisation comes at a price and it is important to be sure that the investment is worthwhile.</p>
<p class="bodytext">An automatic optimiser (or optimising compiler, a program that performs code optimisation) may itself have to be optimised, either to further improve the efficiency of its target programs or else speed up its own operation. A compilation performed with optimisation 'turned on' usually takes longer, although this is usually only a problem when programs are quite large.</p>
<p class="bodytext">In particular, for just-in-time compilers the performance of the run time compile component, executing together with its target code, is the key to improving overall execution speed and <a href="http://www.kpsol.com">knowledge transfer</a>.</p>]]></content:encoded>
			
			
			<pubDate>Fri, 09 Jul 2010 18:58:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Knowledge Learning | Portal Search | IT Service Level Management</title>
			<link>http://www.kpsol.com/news/news/article/knowledge-learning-portal-search-it-service-level-management/index.html</link>
			<description>knowledge learning and portal search for IT service level management</description>
			<content:encoded><![CDATA[<p class="bodytext"><a href="http://www.kpsol.com/products/index.html">IT service level management</a> manual optimisation sometimes has the side effect of undermining readability. Thus code optimisations should be carefully documented (preferably using in-line comments), and their effect on future development evaluated.</p>
<p class="bodytext">The program that performs an automated optimisation is called an optimiser. Most optimisers are embedded in compilers and operate during compilation. Optimisers can often tailor the generated code to specific processors (as used in <a href="http://www.kpsol.com">portal search</a>).</p>
<p class="bodytext">Today, automated optimisations are almost exclusively limited to compiler optimisation. However, because compiler optimisations are usually limited to a fixed set of rather general optimisations, there is considerable demand for optimisers which can accept descriptions of problem and language-specific optimisations, allowing an engineer to specify custom optimisations. Tools that accept descriptions of optimisations are called program transformation systems and are beginning to be applied to real software systems such as <a href="http://www.kpsol.com">knowledge learning</a> C++.</p>
<p class="bodytext">Some high-level languages (Eiffel, Esterel) optimise their programs by using an intermediate language.</p>
<p class="bodytext">Grid computing or distributed computing aims to optimise the whole system, by moving tasks from computers with high usage to computers with idle time.</p>]]></content:encoded>
			
			
			<pubDate>Fri, 09 Jul 2010 18:26:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Solutions Management | Knowledge Base Software | Online Knowledge Base</title>
			<link>http://www.kpsol.com/news/news/article/solutions-management-knowledge-base-software-online-knowledge-base/index.html</link>
			<description>solutions management for knowledge base software to help with a clients online knowledge base.</description>
			<content:encoded><![CDATA[<p class="bodytext">After the programmer is reasonably sure that the best algorithm is selected for the <a href="http://www.kpsol.com">solutions management</a>, code optimisation can start. Loops can be unrolled (for lower loop overhead, although this can often lead to lower speed if it overloads the CPU cache), data types as small as possible can be used, integer arithmetic can be used instead of floating-point, and so on. (See Algorithmic efficiency article for these and other techniques).</p>
<p class="bodytext">Performance bottlenecks with <a href="http://www.kpsol.com">knowledge base software</a> can be due to language limitations rather than algorithms or data structures used in the program. Sometimes, a critical part of the program can be re-written in a different programming language that gives more direct access to the underlying machine. For example, it is common for very high-level languages like Python to have modules written in C for greater speed. Programs already written in C can have modules written in assembly. Programs written in D can use the inline assembler.</p>
<p class="bodytext">Rewriting sections 'pays off' in these circumstances because of a general &quot;rule of thumb&quot; known as the 90/10 law, which states that 90% of the time is spent in 10% of the code, and only 10% of the time in the remaining 90% of the code. So, putting intellectual effort into optimising just a small part of the program can have a huge effect on the overall speed - if the correct part(s) of the <a href="http://www.kpsol.com/solutions/index.html">online knowledge base</a> can be located.</p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Thu, 08 Jul 2010 19:59:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Knowledge Base | Electronic Document Management | ITSM Software</title>
			<link>http://www.kpsol.com/news/news/article/knowledge-base-electronic-document-management-itsm-software/index.html</link>
			<description>knowledge base and electronic document management for ITSM software.</description>
			<content:encoded><![CDATA[<p class="bodytext">Automated and manual <a href="http://www.kpsol.com/products/index.html">ITSM software</a> optimisation.</p>
<p class="bodytext">Optimisation can be automated by compilers or performed by programmers. Gains are usually limited for local optimisation, and larger for global optimisations. Usually, the most powerful optimisation is to find a superior algorithm.</p>
<p class="bodytext">Optimising a whole system is usually undertaken by programmers because it is too complex for automated optimisers. In this situation, programmers or system administrators explicitly change code so that the overall system performs better. Although it can produce better efficiency, it is far more expensive than automated optimisations.</p>
<p class="bodytext">Use a profiler (or performance analyser) to find the sections of the program that are taking the most resources — the bottleneck. Programmers sometimes believe they have a clear idea of where the bottleneck is, but intuition is frequently wrong. Optimising an unimportant piece of code will typically do little to help the overall performance.</p>
<p class="bodytext">When the bottleneck is localised, optimisation usually starts with a rethinking of the algorithm used in the <a href="http://www.kpsol.com">knowledge base</a> program. More often than not, a particular algorithm can be specifically tailored to a particular problem, yielding better performance than a generic algorithm. For example, the task of sorting a huge list of items is usually done with a quicksort routine, which is one of the most efficient generic algorithms. But if some characteristic of the items is exploitable (for example, they are already arranged in some particular order, <a href="http://www.kpsol.com">electronic document management</a>), a different method can be used, or even a custom-made sort routine.</p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Thu, 08 Jul 2010 18:39:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Knowledge Management Software | Information Retrieval Systems | IT Service Management Software</title>
			<link>http://www.kpsol.com/news/news/article/knowledge-management-software-information-retrieval-systems-it-service-management-software/index.html</link>
			<description>knowledge management software and information retrieval systems for all your IT service management software needs</description>
			<content:encoded><![CDATA[<p class="bodytext"><a href="http://www.kpsol.com">knowledge management software</a> Macros</p>
<p class="bodytext">Optimisation during code development using macros takes on different forms in different languages.</p>
<p class="bodytext">In some procedural languages, such as C and C++, macros are implemented using token substitution. Nowadays, inline functions can be used as a type safe alternative in many cases. In both cases, the inlined function body can then undergo further compile-time optimisations by the compiler, including constant folding, which may move some computations to compile time.</p>
<p class="bodytext">In many functional programming languages macros are implemented using parse-time substitution of parse trees/abstract syntax trees, which it is claimed makes them safer to use. Since in many cases interpretation is used, that is one way to ensure that such computations are only performed at parse-time, and sometimes the only way.</p>
<p class="bodytext">Lisp originated this style of macro, and such macros are often called “Lisp-like macros.” A similar effect can be achieved by using Template metaprogramming in C++.</p>
<p class="bodytext">In both cases, work is moved to compile-time. The difference between C macros on one side, and Lisp-like macros and C++ Template metaprogramming on the other side, is that the latter tools allow performing arbitrary computations at compile-time/parse-time (<a href="http://www.kpsol.com">information retrieval systems</a>), while expansion of C macros does not perform any computation, and relies on the optimiser ability to perform it. Additionally, C macros do not directly support recursion nor iteration, so are not Turing complete.</p>
<p class="bodytext">As with any optimisation, however, it is often difficult to predict where such tools will have the most impact before a project is complete especially with <a href="http://www.kpsol.com/solutions/index.html">IT service management software</a>.</p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Wed, 07 Jul 2010 19:11:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Knowledge Management Systems | Service Desk Software | Information Technology Infrastructure Library</title>
			<link>http://www.kpsol.com/news/news/article/knowledge-management-systems-service-desk-software-information-technology-infrastructure-library/index.html</link>
			<description>knowledge management systems and service desk software for your information technology infrastructure library.</description>
			<content:encoded><![CDATA[<p class="bodytext">When to optimize <a href="http://www.kpsol.com">knowledge management systems</a></p>
<p class="bodytext">Optimisation can reduce readability and add code that is used only to improve the performance. This may complicate programs or systems, making them harder to maintain and debug. As a result, optimisation or performance tuning is often performed at the end of the development stage.</p>
<p class="bodytext">Donald Knuth made the following two statements on optimisation:</p>
<p class="bodytext">    * &quot;We should forget about small efficiencies, say about 97% of the time: premature optimisation is the root of all evil&quot; </p>
<p class="bodytext">   (He also attributed the quote to Tony Hoare several years later, although this might have been an error as Hoare disclaims having coined the phrase.)</p>
<p class="bodytext">    * &quot;In established engineering disciplines a 12 % improvement, easily obtained, is never considered marginal and I believe the same viewpoint should prevail in software engineering&quot;</p>
<p class="bodytext">&quot;Premature optimisation&quot; is a phrase used to describe a situation where a programmer lets performance considerations affect the design of a piece of code as with most <a href="http://www.kpsol.com">service desk software</a>. This can result in a design that is not as clean as it could have been or code that is incorrect, because the code is complicated by the optimisation and the programmer is distracted by optimising.</p>
<p class="bodytext">An alternative approach is to design first, code from the design and then profile/benchmark the resulting code to see which parts should be optimised. A simple and elegant design is often easier to optimise at this stage, and profiling may reveal unexpected performance problems that would not have been addressed by premature optimisation.</p>
<p class="bodytext">In practice, it is often necessary to keep performance goals in mind when first designing software, but the programmer balances the goals of design and optimisation particularly with your <a href="http://www.kpsol.com/products/index.html">information technology infrastructure library</a>.</p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Wed, 07 Jul 2010 18:30:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>CRM Web Based | Customer Service Software | Windows Knowledge Base</title>
			<link>http://www.kpsol.com/news/news/article/crm-web-based-customer-service-software-windows-knowledge-base/index.html</link>
			<description>CRM web based and customer service software or the alternative windows knowledge base.</description>
			<content:encoded><![CDATA[<p class="bodytext"><a href="http://www.kpsol.com">CRM web based</a> Bottlenecks</p>
<p class="bodytext">Optimisation as with most <a href="http://www.kpsol.com">customer service software</a> may include finding a bottleneck, a critical part of the code that is the primary consumer of the needed resource - sometimes known as a hot spot. Often, the pareto principle is applied. i.e., 20% of the code is responsible for 80% of the results.</p>
<p class="bodytext">In computer science, the Pareto principle can be applied to resource optimisation by observing that 80% of the resources are typically used by 20% of the operations. In software engineering, it is often a better approximation that 90% of the execution time of a computer program is spent executing 10% of the code (known as the 90/10 law in this context).</p>
<p class="bodytext">More complex algorithms and data structures perform well with many items, while simple algorithms are more suitable for small amounts of data—the setup, initialisation time, and constant factors of the more complex algorithm can outweigh the benefit.</p>
<p class="bodytext">In some cases and particularly with <a href="http://www.kpsol.com/solutions/index.html">windows knowledge base</a> technology, adding more memory can help to make a program run faster. For example, a filtering program will commonly read each line and filter and output that line immediately. This only uses enough memory for one line, but performance is typically poor. Performance can be greatly improved by reading the entire file then writing the filtered result, though this uses much more memory. Caching the result is similarly effective, though also requiring larger memory use.</p>]]></content:encoded>
			
			
			<pubDate>Tue, 06 Jul 2010 18:57:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>CRM Software | CRM Support | knowledge base management</title>
			<link>http://www.kpsol.com/news/news/article/crm-software-crm-support-knowledge-base-management/index.html</link>
			<description>CRM software with CRM support is the cornerstone of knowledge base management.</description>
			<content:encoded><![CDATA[<p class="bodytext">Trade-offs with <a href="http://www.kpsol.com">CRM support</a></p>
<p class="bodytext">Optimisation will generally focus on improving just one or two aspects of performance: execution time, memory usage, disk space, bandwidth, power consumption or some other resource as in most <a href="http://www.kpsol.com">CRM software</a>. This will usually require a trade-off - where one factor is optimised at the expense of others. For example, increasing the size of cache improves runtime performance, but also increases the memory consumption. Other common trade-offs include code clarity and conciseness.</p>
<p class="bodytext">There are instances where the programmer performing the optimisation must decide to make the software more optimal for some operations but at the cost of making other operations less efficient (<a href="http://www.kpsol.com/products/index.html">knowledge base management</a>). These trade-offs may sometimes be of a non-technical nature - such as when a competitor has published a benchmark result that must be beaten in order to improve commercial success but comes perhaps with the burden of making normal usage of the software less efficient. Such changes are sometimes jokingly referred to as pessimizations.</p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Tue, 06 Jul 2010 18:15:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>Problem Management | web based CRM software | online knowledge base</title>
			<link>http://www.kpsol.com/news/news/article/problem-management-web-based-crm-software-online-knowledge-base/index.html</link>
			<description>problem management for your web based CRM software and online knowledge base.</description>
			<content:encoded><![CDATA[<p class="bodytext"> * Run time</p>
<p class="bodytext">Just in time compilers and Assembler programmers may be able to perform run time optimisation exceeding the capability of static compilers by dynamically adjusting parameters according to the actual input or other factors.</p>
<p class="bodytext">Platform dependent and independent optimisations within an <a href="http://www.kpsol.com/solutions/index.html">online knowledge base</a> </p>
<p class="bodytext">Code optimisation or <a href="http://www.kpsol.com">problem management</a> can be also broadly categorised as platform-dependent and platform-independent techniques. While the latter ones are effective on most or all platforms, platform-dependent techniques use specific properties of one platform, or rely on parameters depending on the single platform or even on the single processor. Writing or producing different versions of the same code for different processors might be needed therefore. For instance, in the case of compile-level <a href="http://www.kpsol.com">web based CRM software</a> optimisation, platform-independent techniques are generic techniques (such as loop unrolling, reduction in function calls, memory efficient routines, reduction in conditions, etc.), that impact most CPU architectures in a similar way.  Generally, these serve to reduce the total Instruction path length required to complete the program and/or reduce total memory usage during the process. On the other hand, platform-dependent techniques involve instruction scheduling, instruction-level parallelism, data-level parallelism, cache optimisation techniques (i.e. parameters that differ among various platforms) and the optimal instruction scheduling might be different even on different processors of the same architecture.</p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Mon, 05 Jul 2010 18:49:00 +0100</pubDate>
			
		</item>
		
		<item>
			<title>ITIL Management | Knowledge Management Solutions | Knowledge Management Product</title>
			<link>http://www.kpsol.com/news/news/article/itil-management-knowledge-management-solutions-knowledge-management-product/index.html</link>
			<description>ITIL management and knowledge management solutions as part of the full knowledge management product.</description>
			<content:encoded><![CDATA[<p class="bodytext">* Compile level</p>
<p class="bodytext">Use of an optimising compiler tends to ensure that the executable program is optimised at least as much as the compiler can predict (used in <a href="http://www.kpsol.com">ITIL management</a>).</p>
<p class="bodytext">    * Assembly level</p>
<p class="bodytext">At the lowest level, writing code using an assembly language, designed for a particular hardware platform or <a href="http://www.kpsol.com/products/index.html">knowledge management product</a> will normally produce the most efficient code since the programmer can take advantage of the full repertoire of machine instructions. The operating systems of most machines have been traditionally written in assembler code for this reason.</p>
<p class="bodytext">With more modern optimising compilers and the greater complexity of recent CPUs, it is more difficult to write code that is optimised better than the compiler itself generates, and few projects need resort to this 'ultimate' optimisation step.</p>
<p class="bodytext">However, a large amount of code written today is still compiled with the intent to run on the greatest percentage of machines possible (total <a href="http://www.kpsol.com">knowledge management solutions</a>). As a consequence, programmers and compilers don't always take advantage of the more efficient instructions provided by newer CPUs or quirks of older models. Additionally, assembly code tuned for a particular processor without using such instructions might still be suboptimal on a different processor, expecting a different tuning of the code.</p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			
			
			<pubDate>Mon, 05 Jul 2010 18:16:00 +0100</pubDate>
			
		</item>
		
	</channel>
</rss>