``````

In [ ]:

# Plot various data

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
import math

figsize=(4.5, 3)

``````
``````

In [ ]:

# Only read this one CSV.
# Change this, if you are interested in different ciphers

``````
``````

In [ ]:

data1C = data[data['numConns'] == 1]
#data1C

``````
``````

In [ ]:

data1C.loc[[0]]['dataLen'] = 500
#data1C

``````
``````

In [ ]:

# Normalize the data
for i,r in data1C.iterrows():
r['openssl'] /= r['numBytes']
r['denseMap'] /= r['numPkts']
r['tbb'] /= r['numPkts']
r['siphash'] /= r['numPkts']

``````
``````

In [ ]:

#plt.plot(data1C['dataLen'], data1C['openssl'])

# Plot the cost of siphash
fig = plt.figure(figsize=figsize, dpi=300)
plt.plot(data1C['dataLen'], data1C['siphash'])
plt.semilogx()
plt.xlabel('Data Length')
plt.ylabel('Cycles')
plt.title("Cost of siphash by data length")

plt.grid(b=True)

plt.savefig('output/siphash.pdf',bbox_inches='tight')
plt.show()

``````
``````

In [ ]:

# Plot the cost of TBB's shared map
tbbMean = data.groupby(['numConns'])['tbb'].mean()
steps = data['numConns'].unique()

[print("{" + str(x) + "," + str(tbbMean[x]) + "},", end='') for x in data['numConns'].unique()]

fig = plt.figure(figsize=figsize, dpi=300)
plt.plot(steps, tbbMean)
plt.ylim([0,40000])
plt.xlabel('#Connections')
plt.ylabel('Cycles')
plt.title("Cost of shared map by number of connections")

plt.grid(b=True)

plt.savefig('output/tbb.pdf',bbox_inches='tight')
plt.show()

``````
``````

In [ ]:

# Plot the cost of the memory allocation
memMean = data.groupby(['numConns'])['memory'].mean()

#print(memMean)

memMeanPC = [memMean[x] / x for x in data['numConns'].unique()]

#[print("{" + str(x) + "," + str(memMean[x]) + "},", end='') for x in data['numConns'].unique()]

fig = plt.figure(figsize=figsize, dpi=300)
plt.plot(steps, memMean)
plt.ylim([0,15000])
plt.xlabel('#Connections')
plt.ylabel('Cycles')
plt.title("Cost of memory allocation by number of connections")

plt.grid(b=True)

plt.savefig('output/memory.pdf',bbox_inches='tight')
plt.show()

``````
``````

In [ ]:

# Build logarithmic data
r['denseMap'] /= r['numPkts']
r['dataLen'] = math.log10(r['dataLen'])
r['numConns'] = math.log(r['numConns'],2)

``````
``````

In [ ]:

# Plot the denseMap cost in 3D

steps = data['numConns'].unique()

import numpy as np

X = [np.arange(2,8)] * 6

Y = [[x] * 6 for x in range(1,7)]

#fig = plt.figure(figsize=(16, 10), dpi=80)
fig = plt.figure(figsize=(7, 4), dpi=300)
#fig = plt.figure(figsize=figsize, dpi=300)
ax = fig.gca(projection='3d')

ax.set_xlabel('#Bytes 10^x')
ax.set_ylabel('#Connections 2^x')
ax.set_zlabel('Cycles')

ax.set_zlim(0,600)

#ax.scatter(X, Y, Z)
ax.plot_wireframe(X,Y,Z)
plt.title("Cost of state map by number of connections")
plt.savefig('output/denseMap.pdf',bbox_inches='tight')
plt.show()

#plt.plot(steps, denseMapMean)
#plt.ylim([0,500])
#plt.xlabel('#Connections')
#plt.ylabel('Cycles')
#plt.title("Cost of state map by number of connections")
#plt.show()
#

``````
``````

In [ ]:

``````