Skip to main content

Big-O Simplified!

Big-O notation describes patterns of activity of systems in terms of standard mathematical models in which an amount of resources (time, quantity, cost, etc.) determines scope. The patterns of activity must contain input that can be isolated and modified to be improved without negatively effecting the desired outcomes of their systems. Big-O helps systems analysts describe patterns of activity as best-case, acceptable-case, or worst-case. Big-O is used in business and computer science for documenting system behavior and for arguing system improvements.

Patterns of activity of systems are typically expressed as algorithms. In the simplest terms, big-O is an estimate of the optimal efficiency of algorithms.

When comparing two or more algorithms for optimal efficiency the following criteria must be met:
  1. Algorithms were designed using the same language.
  2. Algorithms result in the same measure (e.g. running time).
  3. Algorithms use the same set of operations.
  4. Algorithms have an estimated number of operations in common that can represent the best-case of efficiency.
  5. Algorithms have an estimated number of operations in common that can represent the acceptable-case of efficiency (current design being used).
  6. Algorithms have an estimated number of operations in common that can represent the worst-case of efficiency.
After you've decided the scope of optimal efficiency and the standardized model to use, you can equate the estimates to big-O notation. 

Here's an excellent reference to big-O notation:

Do you have a suggestion about how to improve this blog? Let's talk about it. Contact me at David.Brenner.Jr@Gmail.com or 720-584-5229.

Comments

Popular posts from this blog

Application behavior monitoring in Linux with Python

You can monitor application behaviors by collecting relevant machine data from your endpoint. You can use the machine data to investigate suspicious activity and create your own analysis. Before you start your investigation you will need to determine normal activity on your endpoint. Normal activity is the scope of functionality of the software on your endpoint during periods of low activity and high activity. You will need some kind of software that periodically collects specific machine data from your endpoint like my software developed in Python that's available for free download at https://github.com/davidbrennerjr/server-stats-collector Ingest one or more of the following machine data from Category #1. Ingest one or more of the following machine data from Category #2. Category #1 General system-wide error messages from /var/log/syslog Auditing logs of application rulesets Auditing logs of security contexts Auditing logs of

Network traffic monitoring in Linux with Python

You can investigate suspicious activity in your network traffic by collecting relevant machine data from your endpoint. You can use the machine data to create your own analysis. Before you start your investigation you will need to determine normal activity on your endpoint. Normal activity is the scope of functionality of the software on your endpoint during periods of low activity and high activity. You will need some kind of software that periodically collects specific machine data from your endpoint like my software developed in Python that's available for free download at https://github.com/davidbrennerjr/server-stats-collector Ingest one or more of the following machine data: Application specific logs from /var/log Raw dumps from sniffing at Layers 2-3 Raw dumps from /proc of kernel data structures Raw dumps of kernel routing tables General system-wide error messages from /var/log/syslog Do you

Continuous Integration (CI) Best Practices

Continuous Integration (CI) automates the building and testing of software in a test environment whenever a change is committed to a revision control system. CI performs QA testing of a change before adding it to the current working version. CI makes sure all development can be integrated into a build. CI Best Practices 1. Maintain a test environment that's a clone of the production environment. 2. Maintain a revision control system such as CVS, SVN or Git. 3. Automate the building of software and the documenting of code in the test environment. 4. Automate QA testing of a change then report that change to developers. 5. Commit changes regularly to avoid integration conflicts. 6. Monitor the revision control system for a commit then build the software before replacing the current working version. Do you have a suggestion about how to improve this blog? Let's talk about it. Contact me at David.Brenner.Jr@Gmail.com or 720-584-5229.