This commit is contained in:
Casper 2018-09-05 13:16:44 +02:00
parent b0e3ef3fce
commit dbf1bc237b
4 changed files with 329 additions and 78 deletions

244
.gitignore vendored Normal file
View File

@ -0,0 +1,244 @@
# Created by https://www.gitignore.io/api/python,pycharm,pycharm+all,pycharm+iml
### PyCharm ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
# Gradle:
.idea/**/gradle.xml
.idea/**/libraries
# CMake
cmake-build-debug/
# Mongo Explorer plugin:
.idea/**/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Ruby plugin and RubyMine
/.rakeTasks
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### PyCharm Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### PyCharm+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
# Sensitive or high-churn files:
# Gradle:
# CMake
# Mongo Explorer plugin:
## File-based project format:
## Plugin-specific files:
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Cursive Clojure plugin
# Ruby plugin and RubyMine
# Crashlytics plugin (for Android Studio and IntelliJ)
### PyCharm+all Patch ###
# Ignores the whole idea folder
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
.idea/
### PyCharm+iml ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
# Sensitive or high-churn files:
# Gradle:
# CMake
# Mongo Explorer plugin:
## File-based project format:
## Plugin-specific files:
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Cursive Clojure plugin
# Ruby plugin and RubyMine
# Crashlytics plugin (for Android Studio and IntelliJ)
### PyCharm+iml Patch ###
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
.pytest_cache/
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule.*
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
# End of https://www.gitignore.io/api/python,pycharm,pycharm+all,pycharm+iml

View File

@ -375,5 +375,4 @@ size: 536870912, step: 8388608 and time Elapsed: 70 milliseconds
size: 536870912, step: 16777216 and time Elapsed: 48 milliseconds
size: 536870912, step: 33554432 and time Elapsed: 93 milliseconds
size: 536870912, step: 67108864 and time Elapsed: 71 milliseconds
size: 536870912, step: 134217728 and time Elapsed: 78 milliseconds
size: 536870912, step: 134217728 and time Elapsed: 78 milliseconds

BIN
heatmap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -1,76 +1,84 @@
import subprocess
import tempfile
import re
import matplotlib.pyplot as plt
from collections import defaultdict
import argparse
from math import log2
import pandas as pd
parser = argparse.ArgumentParser(description='Read data from a data file and plot this.')
parser.add_argument('--data_file', action='store', dest='data_file', default='plot_data.txt',
help='The desired data to be plotted.')
parser.add_argument('--static_n', action='store_true',
help="Is the n variable static in the data file?")
parser.add_argument('--static_step', action='store_true',
help="Is the step variable static in the data file?")
args = parser.parse_args()
data = open(args.data_file).read()
# d = {'static variable' : {step : time, step : time}}
def prep_data(static_var, data):
non_static_var = (static_var + 1) % 2 # if 0 then 1, if 1 then 0
#non_static_var = 1 - static_var #rip :(
lines = data.split('\n')
static_vars = set()
data = defaultdict(dict)
for line in lines[0:-1]:
all_vars = re.findall(r"\d+", line)
static = int(all_vars[static_var])
non_static = int(all_vars[non_static_var])
time = int(all_vars[2])
static_vars.add(static)
data[static][non_static] = time
return data
static_var = 0 if args.static_n else 1
plot_data = prep_data(static_var, data)
df = pd.DataFrame(data=plot_data)
print(df)
plt.imshow(df, cmap='hot')
plt.show()
#first = plot_data[list(plot_data.keys())[2]]
#plt.plot(first[0], first[1])
#for static, plotting_data in plot_data.items():
# x_axis = [log2(x) for x in plotting_data[0]]
# plt.plot(x_axis, plotting_data[1], marker="o", label = static)
#plt.xticks([2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26], ["$log2(2^2)$", "log2(2^4)", "log2(2^6)", "log2(2^8)", "log2(2^10)", "log2(2^12)", "log2(2^14)", "log2(2^16)", "log2(2^18)", "log2(2^20)", "log2(2^22)", "log2(2^24)", "log2(2^26)"])
#plt.legend(loc=1, borderaxespad=0.)
#plt.ylabel('time/ms')
#plt.xlabel('log(step)')
#plt.show()
import math
import subprocess
import tempfile
import re
import matplotlib.pyplot as plt
from collections import defaultdict
import argparse
from math import log2
import pandas as pd
import seaborn as sns
parser = argparse.ArgumentParser(description='Read data from a data file and plot this.')
parser.add_argument('--data_file', action='store', dest='data_file', default='plot_data.txt',
help='The desired data to be plotted.')
parser.add_argument('--static_n', action='store_true',
help="Is the n variable static in the data file?")
parser.add_argument('--static_step', action='store_true',
help="Is the step variable static in the data file?")
args = parser.parse_args()
data = open(args.data_file).read()
# d = {'static variable' : {step : time, step : time}}
def prep_data(static_var, data):
non_static_var = (static_var + 1) % 2 # if 0 then 1, if 1 then 0
#non_static_var = 1 - static_var #rip :(
lines = data.split('\n')
static_vars = set()
data = defaultdict(dict)
for line in lines[0:-1]:
all_vars = re.findall(r"\d+", line)
static = int(all_vars[static_var])
non_static = int(all_vars[non_static_var])
time = int(all_vars[2])
static_vars.add(static)
data[static][non_static] = time
return data
static_var = 0 if args.static_n else 1
plot_data = prep_data(static_var, data)
df = pd.DataFrame(data=plot_data)
print(df)
hm = sns.heatmap(df, annot=False, square=False, cmap=sns.cm.rocket_r)
hm.invert_yaxis()
# fix xtics
locs, labels = plt.xticks()
plt.xticks(locs, [f"$2^{{{int(math.log2(int(i.get_text())))}}}$" for i in labels])
locs, labels = plt.yticks()
plt.yticks(locs, [f"$2^{{{int(math.log2(int(i.get_text())))}}}$" for i in labels])
plt.show()
#first = plot_data[list(plot_data.keys())[2]]
#plt.plot(first[0], first[1])
#for static, plotting_data in plot_data.items():
# x_axis = [log2(x) for x in plotting_data[0]]
# plt.plot(x_axis, plotting_data[1], marker="o", label = static)
#plt.xticks([2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26], ["$log2(2^2)$", "log2(2^4)", "log2(2^6)", "log2(2^8)", "log2(2^10)", "log2(2^12)", "log2(2^14)", "log2(2^16)", "log2(2^18)", "log2(2^20)", "log2(2^22)", "log2(2^24)", "log2(2^26)"])
#plt.legend(loc=1, borderaxespad=0.)
#plt.ylabel('time/ms')
#plt.xlabel('log(step)')
#plt.show()