According to the answer at Does dx conversion to dex include verification of original class files?, some but not much optimization takes place, but I agree with the recommendation to check out the dx
source for more information about the actual conversion.
If you find the conversion is mostly one-to-one, then your current strategy of counting Java bytecode instructions may give a decent estimate of Dalvik instruction count, but keep in mind there are many other factors beyond simply instruction count that affect performance (including, but definitely not limited to, values determined at run-time e.g. user input, cache performance, instruction execution time, pipeline characteristics, use of non-CPU resources, etc.) and this won't really give you a reasonable estimate of how "resource intensive" the code is (consider the simple example of a tight infinite while
loop vs. a higher-instruction-count loop that contains a 1 second sleep on each iteration).