Search Results

Search found 3828 results on 154 pages for 'mathematical optimization'.

Page 9/154 | < Previous Page | 5 6 7 8 9 10 11 12 13 14 15 16  | Next Page >

  • Premature-Optimization and Performance Anxiety

    - by James Michael Hare
    While writing my post analyzing the new .NET 4 ConcurrentDictionary class (here), I fell into one of the classic blunders that I myself always love to warn about.  After analyzing the differences of time between a Dictionary with locking versus the new ConcurrentDictionary class, I noted that the ConcurrentDictionary was faster with read-heavy multi-threaded operations.  Then, I made the classic blunder of thinking that because the original Dictionary with locking was faster for those write-heavy uses, it was the best choice for those types of tasks.  In short, I fell into the premature-optimization anti-pattern. Basically, the premature-optimization anti-pattern is when a developer is coding very early for a perceived (whether rightly-or-wrongly) performance gain and sacrificing good design and maintainability in the process.  At best, the performance gains are usually negligible and at worst, can either negatively impact performance, or can degrade maintainability so much that time to market suffers or the code becomes very fragile due to the complexity. Keep in mind the distinction above.  I'm not talking about valid performance decisions.  There are decisions one should make when designing and writing an application that are valid performance decisions.  Examples of this are knowing the best data structures for a given situation (Dictionary versus List, for example) and choosing performance algorithms (linear search vs. binary search).  But these in my mind are macro optimizations.  The error is not in deciding to use a better data structure or algorithm, the anti-pattern as stated above is when you attempt to over-optimize early on in such a way that it sacrifices maintainability. In my case, I was actually considering trading the safety and maintainability gains of the ConcurrentDictionary (no locking required) for a slight performance gain by using the Dictionary with locking.  This would have been a mistake as I would be trading maintainability (ConcurrentDictionary requires no locking which helps readability) and safety (ConcurrentDictionary is safe for iteration even while being modified and you don't risk the developer locking incorrectly) -- and I fell for it even when I knew to watch out for it.  I think in my case, and it may be true for others as well, a large part of it was due to the time I was trained as a developer.  I began college in in the 90s when C and C++ was king and hardware speed and memory were still relatively priceless commodities and not to be squandered.  In those days, using a long instead of a short could waste precious resources, and as such, we were taught to try to minimize space and favor performance.  This is why in many cases such early code-bases were very hard to maintain.  I don't know how many times I heard back then to avoid too many function calls because of the overhead -- and in fact just last year I heard a new hire in the company where I work declare that she didn't want to refactor a long method because of function call overhead.  Now back then, that may have been a valid concern, but with today's modern hardware even if you're calling a trivial method in an extremely tight loop (which chances are the JIT compiler would optimize anyway) the results of removing method calls to speed up performance are negligible for the great majority of applications.  Now, obviously, there are those coding applications where speed is absolutely king (for example drivers, computer games, operating systems) where such sacrifices may be made.  But I would strongly advice against such optimization because of it's cost.  Many folks that are performing an optimization think it's always a win-win.  That they're simply adding speed to the application, what could possibly be wrong with that?  What they don't realize is the cost of their choice.  For every piece of straight-forward code that you obfuscate with performance enhancements, you risk the introduction of bugs in the long term technical debt of the application.  It will become so fragile over time that maintenance will become a nightmare.  I've seen such applications in places I have worked.  There are times I've seen applications where the designer was so obsessed with performance that they even designed their own memory management system for their application to try to squeeze out every ounce of performance.  Unfortunately, the application stability often suffers as a result and it is very difficult for anyone other than the original designer to maintain. I've even seen this recently where I heard a C++ developer bemoaning that in VS2010 the iterators are about twice as slow as they used to be because Microsoft added range checking (probably as part of the 0x standard implementation).  To me this was almost a joke.  Twice as slow sounds bad, but it almost never as bad as you think -- especially if you're gaining safety.  The only time twice is really that much slower is when once was too slow to begin with.  Think about it.  2 minutes is slow as a response time because 1 minute is slow.  But if an iterator takes 1 microsecond to move one position and a new, safer iterator takes 2 microseconds, this is trivial!  The only way you'd ever really notice this would be in iterating a collection just for the sake of iterating (i.e. no other operations).  To my mind, the added safety makes the extra time worth it. Always favor safety and maintainability when you can.  I know it can be a hard habit to break, especially if you started out your career early or in a language such as C where they are very performance conscious.  But in reality, these type of micro-optimizations only end up hurting you in the long run. Remember the two laws of optimization.  I'm not sure where I first heard these, but they are so true: For beginners: Do not optimize. For experts: Do not optimize yet. This is so true.  If you're a beginner, resist the urge to optimize at all costs.  And if you are an expert, delay that decision.  As long as you have chosen the right data structures and algorithms for your task, your performance will probably be more than sufficient.  Chances are it will be network, database, or disk hits that will be your slow-down, not your code.  As they say, 98% of your code's bottleneck is in 2% of your code so premature-optimization may add maintenance and safety debt that won't have any measurable impact.  Instead, code for maintainability and safety, and then, and only then, when you find a true bottleneck, then you should go back and optimize further.

    Read the article

  • Search engine optimization Links

    - by Michael Freidgeim
    Below there are a few links, that I used for my Search engine optimization research:     http://websearch.about.com/od/designforsearch/ss/tendesigntips.htm     Keyword Selection Guidelines   Where To Use Keywords  Google Search Engine Optimization http://websearch.about.com/od/keywordsandphrases/a/sitedesign.htm     http://en.wikipedia.org/wiki/Search_engine_optimization       http://www.google.com/support/webmasters/bin/answer.py?answer=35291

    Read the article

  • Search Engine Placement Optimization and Link Popularity

    The increased visibility of your website due to high link popularity and search engine placement optimization can mean so much, especially if you are promoting a product or service through your website. If you are new to the business of link building, you might be wondering how to get started with it and how search engine placement optimization can help you. Knowledge of link popularity basics is essential even if you are planning on hiring someone to do link building tasks for you.

    Read the article

  • Simple Web Marketing, Search Engine Optimization Strategies For an Online Small Business

    There are a number of simple web marketing, search engine optimization strategies you should keep in mind when you are dealing with an online small business. Regardless of whether you are an offline small business entrepreneur with a company website or, exclusively, an online small-business entrepreneur, these are the simple web marketing, search engine optimization guidelines you ought to keep in mind.

    Read the article

  • Internet Search Engine Optimization For Blockheads

    In today's competitive world, the only way to guarantee that your website will get noticed and therefore earn revenue, is to make sure it goes through internet search engine optimization. This can be achieved by hiring a company that specializes in search engine optimization or SEO.

    Read the article

  • Off-Page Factors That Affect Search Optimization

    Following the discussion of the on-page factors that affect search engine optimization in one of my recent writings, I deem it fit to also discuss the off-page factors that can be of great importance to your search engine optimization campaign. Though many people will not readily agree that something like these exist; but I want to make it known categorically that these less considered factors are also very vital to achieving result in your internet marketing business.

    Read the article

  • How Search Engine Optimization Can Improve Your Business

    Before I move on to how Search Engine Optimization in Toronto can improve your business, you need to familiarize yourself with search engine optimization (SEO). Many people think SEO is a very complex process with many steps and procedures involved. It is true to a certain extent as there are many things which have to be done in SEO, but SEO is simplified if you know the basics well.

    Read the article

  • Bing Search Engine Optimization Tips

    Microsoft's introduction of Bing completely transformed our conventional ways of website optimization. Websites will have a new approach to search engine optimization, where there no longer be a need to submit your website to popular search engines or even get links from external sources just for your website to get indexed.

    Read the article

  • Deciphering a Search Engine Optimization Analysis

    A search engine optimization analysis is a tool that web developers can use to track how well their sites are showing up on the most popular search engines. There are several types of analysis software and services available that will give a good reading of your website's real optimization level. Ideally, a business website will be ranked near the top of search engine results, which will drive more traffic to the site.

    Read the article

  • Search Engine Placement Optimization - Methods and Practices That Work

    Proper utilization of search engine optimization is pertinent to the success of Internet related businesses. In order for SEO (search engine optimization) to be effective it must utilize methods and practices that have proven to be successful. The process involves knowing the proper keywords connected to using these keywords in order to provide a highest possible hit rate.

    Read the article

  • Training of Search Engine Optimization

    There are many valuable points that cannot be obtained without proper search engine optimization training and the main features of any SEO course will be discussed. The first and foremost feature is keyword optimization which is the key to success when it comes to SEO articles as there are no back links.

    Read the article

  • How Local Search Engine Optimization Helps For Getting More Target Visitors

    In recent years, local search engine optimization has gained wide popularity to pull the attention of many visitors. Today it has become much needed and industry-accepted marketing tool, and many webmasters and local business owners are looking to gain benefit from it. In this article, know how local search engine optimization can help you get more target visitors.

    Read the article

  • How to Increase Link Popularity by Using International Search Engine Optimization

    A few years ago, international search engine optimization was not around and determining your popularity in the search engine had nothing to do with building link popularity, but instead on page factors. Today, the business has changed tremendously that building your link popularity has become the most important part of website optimization. Thus, how you position your words and arrange them in your page plays a very significant part.

    Read the article

  • Search Engine Optimization Training - Do Not Make a Mistake in Choosing One

    Does Birmingham living have you stressed? Busy streets, heavy workloads got you down? However, 1 of the greatest things that you simply can get advantage from this place is that there are numerous Birmingham web design companies and Birmingham search engine optimization corporations that are willing to help you out with your online business. As everybody knows, Search engine optimization instruction plays an crucial role when it comes to setting up an online business.

    Read the article

  • Guaranteed Success With the Best Organic Search Engine Optimization

    The best organic search engine optimization is going to be quite like the regular SEO protocol, in that you are going to design your website so that people searching for terms that you can help them with will inevitably end up on your site. When you have the right keywords, and are using the keyword search engine optimization tool, you are going to be ending up with the highest rankings of the non-paid sites, and therefore more people are going to end up at your site when they search.

    Read the article

< Previous Page | 5 6 7 8 9 10 11 12 13 14 15 16  | Next Page >