Using wodan's version with no += and using time_expression gives me this:
eval return time_expression { object *inside = allocate(sizeof(users())); object pl, env; int i=0; foreach (pl in users()) { env = environment(pl); if (env && env->query_property("indoors")) inside[i++] = pl; } inside = inside[0..i-1]; write(identify(inside)+"\n"); }
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 243
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 205
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 222
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 220
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 235
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 221
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 220
eval return time_expression { object *inside = filter(users(), (: environment($1) && environment($1)->query_property("indoors") :) ); write(identify(inside)+"\n"); }
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 212
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 217
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 217
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 215
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 206
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 214
({ OBJ(uzamaki /std/user#1), OBJ(cyan /std/user#991), OBJ(geddoe /std/user#5375), OBJ(nulvect
/std/user#6247) })
Result = 216
That's 7 runs each. With filter had an average of 213 microseconds, without had an average of 223. I guess my driver is just weird; I understand that this is supposed to be abnormal... Either way though, I'm not going to worry about 10 microseconds.