change to bitmaps

It is faster to store and process data availability as bitmaps.
It is also enough, as we will not do anything with the data itself.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2022-12-07 15:25:48 +01:00
parent b48fb6f791
commit a07be50727
No known key found for this signature in database
GPG Key ID: 0FE274EE8C95166E
2 changed files with 11 additions and 18 deletions

View File

@ -1,31 +1,27 @@
#!/bin/python3
import random
from bitarray import bitarray
from bitarray.util import zeros
class Block:
blockSize = 0
data = []
data = bitarray()
def __init__(self, size):
self.blockSize = size
self.data = [0] * (self.blockSize*self.blockSize)
self.data = zeros(self.blockSize*self.blockSize)
def fill(self):
for i in range(self.blockSize*self.blockSize):
self.data[i] = random.randint(1, 9)
self.data[i] = 1
def getColumn(self, columnID):
column = [0] * self.blockSize
for i in range(self.blockSize):
column[i] = self.data[(i*self.blockSize)+columnID]
return column
return self.data[columnID::self.blockSize]
def getRow(self, rowID):
row = [0] * self.blockSize
for i in range(self.blockSize):
row[i] = self.data[(rowID*self.blockSize)+i]
return row
return self.data[rowID*self.blockSize:(rowID+1)*self.blockSize]
def print(self):
dash = "-" * (self.blockSize+2)

View File

@ -2,6 +2,8 @@
import random
from DAS.block import *
from bitarray import bitarray
from bitarray.util import zeros
class Validator:
@ -87,15 +89,10 @@ class Validator:
self.getColumn(c, broadcasted)
def sendColumn(self, c, columnID, broadcasted):
column = [0] * self.blockSize
for i in range(self.blockSize):
if broadcasted.data[(i*self.blockSize)+columnID] == 0:
broadcasted.data[(i*self.blockSize)+columnID] = self.columns[c][i]
broadcasted.data[columnID::self.blockSize] |= self.columns[c]
def sendRow(self, r, rowID, broadcasted):
for i in range(self.blockSize):
if broadcasted.data[(rowID*self.blockSize)+i] == 0:
broadcasted.data[(rowID*self.blockSize)+i] = self.rows[r][i]
broadcasted.data[rowID*self.blockSize:(rowID+1)*self.blockSize] |= self.rows[r]
def sendRows(self, broadcasted):
if self.proposer == 1: