123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- // Copyright (C) 2014 by Xiao Shaun Wang <wangxiao@cs.umd.edu>
- package com.oblivm.backend.flexsc;
- import com.oblivm.backend.network.Network;
- import com.oblivm.backend.util.Utils;
- /*
- * The computational environment for performance measurement.
- */
- public class PMCompEnv extends BooleanCompEnv {
- public static class Statistics {
- public long andGate = 0;
- public long xorGate = 0;
- public long notGate = 0;
- public long OTs = 0;
- public long NumEncAlice = 0;
- public long NumEncBob = 0;
- public long bandwidth = 0;
- public void flush() {
- bandwidth = 0;
- andGate = 0;
- xorGate = 0;
- notGate = 0;
- OTs = 0;
- NumEncAlice = 0;
- NumEncBob = 0;
- }
- public void add(Statistics s2) {
- andGate += s2.andGate;
- xorGate += s2.xorGate;
- notGate += s2.notGate;
- OTs += s2.OTs;
- NumEncAlice += s2.NumEncAlice;
- NumEncBob += s2.NumEncBob;
- bandwidth += s2.bandwidth;
- }
- public void finalize() {
- NumEncAlice = andGate * 4 + OTs * 2;
- NumEncBob = andGate * 1 + OTs * 1;
- }
- public Statistics newInstance() {
- Statistics s = new Statistics();
- s.andGate = andGate;
- s.xorGate = xorGate;
- s.notGate = notGate;
- s.OTs = OTs;
- s.NumEncAlice = NumEncAlice;
- s.NumEncBob = NumEncBob;
- s.bandwidth = bandwidth;
- return s;
- }
- }
- public Statistics statistic;
- public PMCompEnv(Network channel, Party p) {
- super(channel, p, Mode.COUNT);
- this.party = p;
- t = true;
- f = false;
- statistic = new Statistics();
- }
- @Override
- public Boolean inputOfAlice(boolean in) {
- return f;
- }
- @Override
- public Boolean inputOfBob(boolean in) {
- ++statistic.OTs;
- statistic.bandwidth += 10;
- return f;
- }
- @Override
- public boolean outputToAlice(Boolean out) {
- statistic.bandwidth += 10;
- return false;
- }
- @Override
- public boolean outputToBob(Boolean out) {
- statistic.bandwidth += 10;
- return false;
- }
- @Override
- public Boolean and(Boolean a, Boolean b) {
- ++statistic.andGate;
- ++this.numOfAnds;
- statistic.bandwidth += 3 * 10;
- return f;
- }
- @Override
- public Boolean xor(Boolean a, Boolean b) {
- ++statistic.xorGate;
- return f;
- }
- @Override
- public Boolean not(Boolean a) {
- ++statistic.notGate;
- return f;
- }
- @Override
- public boolean[] outputToAlice(Boolean[] out) {
- statistic.bandwidth += 10 * out.length;
- return Utils.tobooleanArray(out);
- }
- @Override
- public boolean[] outputToBob(Boolean[] out) {
- statistic.bandwidth += 10 * out.length;
- return Utils.tobooleanArray(out);
- }
- @Override
- public Boolean[] inputOfAlice(boolean[] in) {
- statistic.bandwidth += 10 * in.length;
- return Utils.toBooleanArray(in);
- }
- @Override
- public Boolean[] inputOfBob(boolean[] in) {
- statistic.OTs += in.length;
- statistic.bandwidth += 10 * 2 * (80 + in.length);
- return Utils.toBooleanArray(in);
- }
- @Override
- public void setEvaluate() {
- // TODO Auto-generated method stub
- }
- }
|