https://github.com/kdlucas/byte-unixbench Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + By Plan + Enterprise + Teams + Compare all + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} kdlucas / byte-unixbench Public * Notifications * Fork 266 * Star 922 Automatically exported from code.google.com/p/byte-unixbench License GPL-2.0 license 922 stars 266 forks Star Notifications * Code * Issues 18 * Pull requests 3 * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights kdlucas/byte-unixbench This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 3 branches 1 tag Code * Clone HTTPS GitHub CLI [https://github.com/k] Use Git or checkout with SVN using the web URL. [gh repo clone kdluca] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @gstrauss gstrauss prefer || over 'or' (portability w/ ancient Perl) ... e477bc0 Feb 24, 2022 prefer || over 'or' (portability w/ ancient Perl) e477bc0 Git stats * 52 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time UnixBench prefer || over 'or' (portability w/ ancient Perl) Feb 24, 2022 .gitignore Add gitignore Mar 24, 2016 LICENSE.txt Added the GPL v2 license file. Dec 18, 2015 README.md Correct misstype words in Readme file. Mar 19, 2016 View code [ ] byte-unixbench History Included Tests Dhrystone Whetstone execl Throughput File Copy Pipe Throughput Pipe-based Context Switching Process Creation Shell Scripts System Call Overhead Graphical Tests License README.md byte-unixbench UnixBench is the original BYTE UNIX benchmark suite, updated and revised by many people over the years. The purpose of UnixBench is to provide a basic indicator of the performance of a Unix-like system; hence, multiple tests are used to test various aspects of the system's performance. These test results are then compared to the scores from a baseline system to produce an index value, which is generally easier to handle than the raw scores. The entire set of index values is then combined to make an overall index for the system. Some very simple graphics tests are included to measure the 2D and 3D graphics performance of the system. Multi-CPU systems are handled. If your system has multiple CPUs, the default behaviour is to run the selected tests twice -- once with one copy of each test program running at a time, and once with N copies, where N is the number of CPUs. This is designed to allow you to assess: * the performance of your system when running a single task * the performance of your system when running multiple tasks * the gain from your system's implementation of parallel processing Do be aware that this is a system benchmark, not a CPU, RAM or disk benchmark. The results will depend not only on your hardware, but on your operating system, libraries, and even compiler. History UnixBench was first started in 1983 at Monash University, as a simple synthetic benchmarking application. It was then taken and expanded by Byte Magazine. Linux mods by Jon Tombs, and original authors Ben Smith, Rick Grehan, and Tom Yager. The tests compare Unix systems by comparing their results to a set of scores set by running the code on a benchmark system, which is a SPARCstation 20-61 (rated at 10.0). David C. Niemi maintained the program for quite some time, and made some major modifications and updates, and produced UnixBench 4. He later gave the program to Ian Smith to maintain. Ian subsequently made some major changes and revised it from version 4 to version 5. Thanks to Ian Smith for managing the release up to 5.1.3. As of the next release (5.2), Anthony F. Voellm is going to help maintain the code base. The releases will happen once there are enough pull requests to warrant a new release. The general process will be the following: * Open a bug announcing that a new release will happen. * Everything on the dev branch will be run. * Code will move from the dev branch into main and be tagged. Bug fix releases with increment the subversion and major functionality changes will increase the major version. Included Tests UnixBench consists of a number of individual tests that are targeted at specific areas. Here is a summary of what each test does: Dhrystone Developed by Reinhold Weicker in 1984. This benchmark is used to measure and compare the performance of computers. The test focuses on string handling, as there are no floating point operations. It is heavily influenced by hardware and software design, compiler and linker options, code optimization, cache memory, wait states, and integer data types. Whetstone This test measures the speed and efficiency of floating-point operations. This test contains several modules that are meant to represent a mix of operations typically performed in scientific applications. A wide variety of C functions including sin, cos, sqrt, exp, and log are used as well as integer and floating-point math operations, array accesses, conditional branches, and procedure calls. This test measure both integer and floating-point arithmetic. execl Throughput This test measures the number of execl calls that can be performed per second. execl is part of the exec family of functions that replaces the current process image with a new process image. It and many other similar commands are front ends for the function execve(). File Copy This measures the rate at which data can be transferred from one file to another, using various buffer sizes. The file read, write and copy tests capture the number of characters that can be written, read and copied in a specified time (default is 10 seconds). Pipe Throughput A pipe is the simplest form of communication between processes. Pipe throughput is the number of times (per second) a process can write 512 bytes to a pipe and read them back. The pipe throughput test has no real counterpart in real-world programming. Pipe-based Context Switching This test measures the number of times two processes can exchange an increasing integer through a pipe. The pipe-based context switching test is more like a real-world application. The test program spawns a child process with which it carries on a bi-directional pipe conversation. Process Creation This test measure the number of times a process can fork and reap a child that immediately exits. Process creation refers to actually creating process control blocks and memory allocations for new processes, so this applies directly to memory bandwidth. Typically, this benchmark would be used to compare various implementations of operating system process creation calls. Shell Scripts The shells scripts test measures the number of times per minute a process can start and reap a set of one, two, four and eight concurrent copies of a shell scripts where the shell script applies a series of transformation to a data file. System Call Overhead This estimates the cost of entering and leaving the operating system kernel, i.e., the overhead for performing a system call. It consists of a simple program repeatedly calling the getpid (which returns the process id of the calling process) system call. The time to execute such calls is used to estimate the cost of entering and exiting the kernel. Graphical Tests Both 2D and 3D graphical tests are provided; at the moment, the 3D suite in particular is very limited, consisting of the ubgears program. These tests are intended to provide a very rough idea of the system's 2D and 3D graphics performance. Bear in mind, of course, that the reported performance will depend not only on hardware, but on whether your system has appropriate drivers for it. License This project is released under the GPL v2 license. About Automatically exported from code.google.com/p/byte-unixbench Resources Readme License GPL-2.0 license Stars 922 stars Watchers 51 watching Forks 266 forks Releases 1 tags Packages 0 No packages published Contributors 13 * @kdlucas * @gstrauss * @t2-kob * @mbrukman * @voellm * @harish-24 * @tycho * @haydarai * @traveller42 * @mihalis68 * @longerzone + 2 contributors Languages * C 62.3% * Perl 33.1% * Makefile 4.0% * Shell 0.6% Footer (c) 2022 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.