Skip to content

Instantly share code, notes, and snippets.

@vojtamolda
Forked from joaqo/sumlist.c
Last active November 28, 2021 06:50
Show Gist options
  • Save vojtamolda/7225a6494a88921e7dc01100f5a64177 to your computer and use it in GitHub Desktop.
Save vojtamolda/7225a6494a88921e7dc01100f5a64177 to your computer and use it in GitHub Desktop.
Simple Benchmark of Summation in C and Swift
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Simple Benchmark of Summation in C and Swift"
],
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
}
},
{
"cell_type": "markdown",
"source": [
"## Benchmarking\n",
"\n",
"Compile and benchmark optimized C and Swift apps."
],
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
}
},
{
"cell_type": "code",
"source": [
"! clang -O3 main.c -o c.app\n",
"! ./c.app > c.csv\n",
"\n",
"! swiftc main.swift -O -o swift.app\n",
"! ./swift.app > swift.csv"
],
"outputs": [],
"execution_count": 1,
"metadata": {
"collapsed": true,
"outputExpanded": false,
"jupyter": {
"source_hidden": false,
"outputs_hidden": false
},
"nteract": {
"transient": {
"deleting": false
}
},
"execution": {
"iopub.status.busy": "2020-05-07T21:39:35.641Z",
"iopub.execute_input": "2020-05-07T21:39:35.643Z",
"iopub.status.idle": "2020-05-07T21:39:37.208Z",
"shell.execute_reply": "2020-05-07T21:39:37.220Z"
}
}
},
{
"cell_type": "markdown",
"source": [
"Load the benchmark data as Pandas `DataFrame`."
],
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
}
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as mpl\n",
"import pandas as pd"
],
"outputs": [],
"execution_count": 2,
"metadata": {
"collapsed": true,
"outputExpanded": false,
"jupyter": {
"source_hidden": false,
"outputs_hidden": false
},
"nteract": {
"transient": {
"deleting": false
}
},
"execution": {
"iopub.status.busy": "2020-05-07T21:40:30.269Z",
"iopub.execute_input": "2020-05-07T21:40:30.272Z",
"iopub.status.idle": "2020-05-07T21:40:30.277Z",
"shell.execute_reply": "2020-05-07T21:40:30.281Z"
}
}
},
{
"cell_type": "code",
"source": [
"c = pd.read_csv(\"c.csv\", delimiter=\" \", usecols=[0], names=[\"execution_time\"])\n",
"swift = pd.read_csv(\"swift.csv\", delimiter=\" \", usecols=[0], names=[\"execution_time\"])\n",
"\n",
"time = pd.concat([c, swift], keys=[\"c\", \"swift\"], axis=1)\n",
"time.T"
],
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/plain": [
" 0 1 2 3 4 5 6 7 \\\n",
"c execution_time 0.288 0.152 0.148 0.148 0.149 0.149 0.149 0.147 \n",
"swift execution_time 0.249 0.154 0.149 0.147 0.147 0.147 0.147 0.147 \n",
"\n",
" 8 9 10 11 12 13 14 \n",
"c execution_time 0.149 0.151 0.148 0.148 0.149 0.149 0.148 \n",
"swift execution_time 0.150 0.149 0.147 0.149 0.150 0.148 0.147 "
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" <th>14</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>c</th>\n",
" <th>execution_time</th>\n",
" <td>0.288</td>\n",
" <td>0.152</td>\n",
" <td>0.148</td>\n",
" <td>0.148</td>\n",
" <td>0.149</td>\n",
" <td>0.149</td>\n",
" <td>0.149</td>\n",
" <td>0.147</td>\n",
" <td>0.149</td>\n",
" <td>0.151</td>\n",
" <td>0.148</td>\n",
" <td>0.148</td>\n",
" <td>0.149</td>\n",
" <td>0.149</td>\n",
" <td>0.148</td>\n",
" </tr>\n",
" <tr>\n",
" <th>swift</th>\n",
" <th>execution_time</th>\n",
" <td>0.249</td>\n",
" <td>0.154</td>\n",
" <td>0.149</td>\n",
" <td>0.147</td>\n",
" <td>0.147</td>\n",
" <td>0.147</td>\n",
" <td>0.147</td>\n",
" <td>0.147</td>\n",
" <td>0.150</td>\n",
" <td>0.149</td>\n",
" <td>0.147</td>\n",
" <td>0.149</td>\n",
" <td>0.150</td>\n",
" <td>0.148</td>\n",
" <td>0.147</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
]
},
"metadata": {}
}
],
"execution_count": 3,
"metadata": {
"collapsed": true,
"outputExpanded": false,
"jupyter": {
"source_hidden": false,
"outputs_hidden": false
},
"nteract": {
"transient": {
"deleting": false
}
},
"execution": {
"iopub.status.busy": "2020-05-07T21:40:31.977Z",
"iopub.execute_input": "2020-05-07T21:40:31.979Z",
"iopub.status.idle": "2020-05-07T21:40:31.998Z",
"shell.execute_reply": "2020-05-07T21:40:32.001Z"
}
}
},
{
"cell_type": "markdown",
"source": [
"## Results\n",
"\n",
"Executed on 2019 MacBook Pro 16\" 2.6 GHz Intel 6-Core i7."
],
"metadata": {
"nteract": {
"transient": {
"deleting": false
}
}
}
},
{
"cell_type": "code",
"source": [
"time_mean = time.mean()\n",
"time_std = time.std()\n",
"\n",
"time_mean.plot.barh(title=\"Absolute Execution Time [ms]\", xerr=time_std);"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": [
"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\n"
]
},
"metadata": {
"needs_background": "light"
}
}
],
"execution_count": 4,
"metadata": {
"collapsed": true,
"outputExpanded": false,
"jupyter": {
"source_hidden": false,
"outputs_hidden": false
},
"nteract": {
"transient": {
"deleting": false
}
},
"execution": {
"iopub.status.busy": "2020-05-07T21:40:34.287Z",
"iopub.execute_input": "2020-05-07T21:40:34.290Z",
"iopub.status.idle": "2020-05-07T21:40:34.427Z",
"shell.execute_reply": "2020-05-07T21:40:34.432Z"
}
}
},
{
"cell_type": "code",
"source": [
"relative_mean = (time.mean() / time.mean().max() * 100)\n",
"relative_std = (time.std() / time.mean().max() * 100)\n",
"\n",
"relative_mean.plot.barh(title=\"Relative Execution Time\", xerr=relative_std);"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": [
"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\n"
]
},
"metadata": {
"needs_background": "light"
}
}
],
"execution_count": 5,
"metadata": {
"collapsed": true,
"outputExpanded": false,
"jupyter": {
"source_hidden": false,
"outputs_hidden": false
},
"nteract": {
"transient": {
"deleting": false
}
},
"execution": {
"iopub.status.busy": "2020-05-07T21:40:37.328Z",
"iopub.execute_input": "2020-05-07T21:40:37.332Z",
"iopub.status.idle": "2020-05-07T21:40:37.454Z",
"shell.execute_reply": "2020-05-07T21:40:37.457Z"
}
}
}
],
"metadata": {
"kernel_info": {
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.7.3",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"kernelspec": {
"argv": [
"/Users/Vojta/Desktop/Summation Benchmark/Python/bin/python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"nteract": {
"version": "0.23.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
#include <time.h>
#include <stdio.h>
int main () {
const int N = 300000;
int64_t buffer[N];
for (int test = 0; test < 15; test++) {
clock_t start = clock();
for (int i = 0; i < N; i++) {
buffer[i] = test;
}
int64_t sum = 0;
for (int i = 0; i < N; i++) {
sum += buffer[i];
}
printf("%.3f ms %llu\n", ((double)(clock() - start)) / CLOCKS_PER_SEC * 1000, sum);
}
return 0;
}
import Foundation
let N = 300_000
var buffer = [Int64](repeating: 0, count: N)
for test: Int64 in 0 ..< 15 {
let start = Date()
buffer.withUnsafeMutableBufferPointer { buffer in
for i in 0 ..< N {
buffer[i] = test
}
}
let sum = buffer.reduce(0, &+)
print("\(String(format: "%.3f", Date().timeIntervalSince(start) * 1_000)) ms \(sum)")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment