Tilemap Draw Time vs. Tile Size

SDK 2.7.2 (Windows)

-I have built a scene that has a tilemap background about 4 times the size of the display and a few low-overhead objects. The tilemap is rendered by using sprite:setTilemap() exactly one time and calling the built-in graphics.sprite.update() each playdate.update()

-When scrolling (updating draw offset) the level, framerate drops from 50 to 30, and sampling clearly reveals graphics.sprite.update() as the culprit

-If I use the same tilemap image table but define tiles as 10x20 (edited: original size was 10x10), the framerate drop is much less severe. With 25x20 tiles, there is no perceptible drop in framerate while scrolling. There seems to be an inverse relationship between tile size and tilemap output image draw time, at least when used with a sprite

Why does this happen?

I'm trying to get a better idea of what's going on internally when rendering sprites that use tilemap data as their source. I would think that the tilemap image is generated only once, either when tilemap data is updated or when I assign it to the associated sprite. Therefore the time it takes to actually draw the sprite seemingly shouldn't be related to the tilemap data itself, just the size of the generated image. But that doesn't seem to be the case-- using the same tile layout list with bigger tiles results in a proportionately bigger output image, yet a proportionately smaller draw time.

Does a sprite set with a tilemap have to generate the image from its tilemap every time it is redrawn to accommodate updates to tilemap data, or something along those lines? If so, is there a way to just do a one-time image output from a tilemap and pass it to a sprite as a static image?

Notes:
-I haven't experimented with tilemap:draw() yet, but I want the option to draw tilemaps between other sprites without the need to write my own draw methods, if possible

-I am also using sprite.addWallSprites() on the same tilemap, but it doesn't seem to impact performance much

-I tried using sprite:setTilemap() then sprite:getImage() to see if I could then just assign that extracted image with setImage(), but when a sprite just has a tilemap assigned, getImage() returns nil