Package edu.brown.hstore.util

Source Code of edu.brown.hstore.util.ParameterSetArrayCache

package edu.brown.hstore.util;

import java.util.BitSet;

import org.voltdb.ParameterSet;

/**
* Reusable ParameterSet array cache
* @author pavlo
*/
public class ParameterSetArrayCache {

    /**
     * Reusable Batch ParameterSet Arrays
     */
    private ParameterSet[][] params;
   
    private final BitSet paramsDirty;
   
    public ParameterSetArrayCache(int init_size) {
        this.params = new ParameterSet[init_size][];
        this.paramsDirty = new BitSet(this.params.length);
        for (int i = 0; i < this.params.length; i++) {
            this.params[i] = new ParameterSet[i];
            for (int j = 0; j < i; j++) {
                this.params[i][j] = new ParameterSet(true);
            } // FOR
        } // FOR
    }
   
    /**
     * Return a cached ParameterSet array. This should only be called internally at this
     * PartitionExecutor or by the VoltProcedures managed by this PartitionExecutor.
     * This is just to reduce the number of objects that we need to allocate
     * @param size The number of ParameterSets in the array
     */
    public ParameterSet[] getParameterSet(int size) {
        if (size >= this.params.length) {
            ParameterSet[][] new_params = new ParameterSet[size+1][];
            System.arraycopy(this.params, 0, new_params, 0, this.params.length);
            this.params = new_params;
        }
        assert(size < this.params.length);
        if (this.params[size] == null) {
            this.params[size] = new ParameterSet[size];
            for (int i = 0; i < size; i++) {
                this.params[size][i] = new ParameterSet(true);
            } // FOR
        }
        this.paramsDirty.set(size);
        return (this.params[size]);
    }
   
    public void reset() {
        for (int i = 0, cnt = this.paramsDirty.length(); i < cnt; i++) {
            if (this.paramsDirty.get(i)) {
                for (int j = 0; j < i; j++) {
                    if (this.params[i][j] != null) this.params[i][j].clear();
                } // FOR
            }
        } // FOR
        this.paramsDirty.clear();
    }
   
}
TOP

Related Classes of edu.brown.hstore.util.ParameterSetArrayCache

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.