first dont use bar.x = whateverX, use translate(whateverX, whateverY). it’s faster.
second don’t use scale to reduce your bar. just reduce the imagesheet 30%.
third, your creating 30/60 images per second depending on your config.lua. i would never use this approach. I would only update the function if anything will happen to the value directly linked to the bar. I don’t think a runtime is needed for a health progress bar.
forth, i would never create 30/60 images per second for a progress bar. i would prefer a method of filling or creating a custom bar using rectangle with a mask if you want that “custom” feel. @roaminggamer was a better approach regarding of speed.