Skip to content

value method reduction discussion #23

Description

@JaredDavis22

Hi -

My off label usage has a higher than normal hit for accessing the variables.

What are the pros/cons of changing the code to do one value() call per operation per parameter vs one per each instance check?

Currently every is{X} call does a value call.

public Object lessThan(final Object a, final Object b) {
		if (isBool(a) && isBool(b)) return lessThan(bool(a), bool(b));
		if (isStr(a) && isStr(b)) return lessThan(str(a), str(b));
		if (isI(a) && isI(b)) return lessThan(i(a), i(b));
		if (isL(a) && isL(b)) return lessThan(l(a), l(b));
		if (isF(a) && isF(b)) return lessThan(f(a), f(b));
		if (isD(a) && isD(b)) return lessThan(d(a), d(b));
		if (isBI(a) && isBI(b)) return lessThan(bi(a), bi(b));
		if (isBD(a) && isBD(b)) return lessThan(bd(a), bd(b));
		return null;
	}

private boolean isBool(final Object o) { return is(o, Boolean.class); }
private boolean is(final Object o, final Class<?> c) {
		return c.isInstance(value(o));
	}

vs

public Object lessThan(final Object aa, final Object bb) {
		Object a = value(aa);
		Object b = value(bb);
		if (isBool(a) && isBool(b)) return lessThan(bool(a), bool(b));
		if (isStr(a) && isStr(b)) return lessThan(str(a), str(b));
		if (isI(a) && isI(b)) return lessThan(i(a), i(b));
		if (isL(a) && isL(b)) return lessThan(l(a), l(b));
		if (isF(a) && isF(b)) return lessThan(f(a), f(b));
		if (isD(a) && isD(b)) return lessThan(d(a), d(b));
		if (isBI(a) && isBI(b)) return lessThan(bi(a), bi(b));
		if (isBD(a) && isBD(b)) return lessThan(bd(a), bd(b));
		return null;
	}

private boolean is(final Object o, final Class<?> c) {
		return c.isInstance(o);
	}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions