c# - How performant is the DBNull.Value.Equals() check? -
i know it's not enough worried about, how performant dbnull.value.equals() check?
public ienumerable<dynamic> query(string sql, params object[] args) { using (var conn = openconnection()) { var rdr = createcommand(sql, conn, args).executereader(commandbehavior.closeconnection); while (rdr.read()) { var e = new expandoobject(); var d = e idictionary<string, object>; (var = 0; < rdr.fieldcount; i++) d.add(rdr.getname(i), dbnull.value.equals(rdr[i]) ? null : rdr[i]); yield return e; } } } in particular, line:
d.add(rdr.getname(i), dbnull.value.equals(rdr[i]) ? null : rdr[i]); versus original code (from rob conery's massive class):
d.add(rdr.getname(i), rdr[i]); there's bound @ least small impact, again not noticable, i'm curious. reason conversion because it's easier testing null in asp.net mvc views.
if in .net reflector can see dbnull object not have fields. there 1 instance of dbnull (the static value field). furthermore, equals method not overriden in dbnull class. means object.equals called external method call checks reference equality.
conclusion: call comparing 2 pointers , performance impact not going issue in situation, it's comparing 2 integer values.
Comments
Post a Comment