Is there a way to make my code less laggy?

my code is super laggy and I dont know how to fix it, can someone help pls??? I tried chathpt and claude ai and neither of them made it less laggy!

// scripts/info.js

const WORLD_SEED = 11111; // seed for world
const WORLD_SIZE = 100; // size of world

const CAM_MINZOOM = 0.5; 
const CAM_MAXZOOM = 2;
const CAM_ZOOMSENSITIVITY = 0.1;

const BACKGROUND_COLOR = '#333'; // bg color
const ONETILE_CHANCE = 0.01; // chance of 1

const TILE_SIZE = 64; // Size of each cell
const TILE_SPACING = 5; // pixels between tiles

const PATH_ZEROTILE = 'assets/empty_tile.png';
const PATH_ONETILE = 'assets/1_tile.png';

// scripts/script.js

const grid = document.getElementById('grid');
const ctx = grid.getContext('2d');
let isDragging = false;
let startX, startY;
let translateX = 0, translateY = 0;
let scale = 1;
const totalCellSize = TILE_SIZE + TILE_SPACING;

let emptyImage = new Image();
emptyImage.src = PATH_ZEROTILE;
let oneImage = new Image();
oneImage.src = PATH_ONETILE;

// Tile cache
const tileCache = new Map();

function resizeCanvas() {
    grid.width = window.innerWidth;
    grid.height = window.innerHeight;
}

resizeCanvas();

grid.addEventListener('mousedown', startDrag);
document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', endDrag);
grid.addEventListener('wheel', zoom);

function startDrag(e) {
    isDragging = true;
    startX = e.clientX - translateX;
    startY = e.clientY - translateY;
}

function drag(e) {
    if (!isDragging) return;
    let newTranslateX = e.clientX - startX;
    let newTranslateY = e.clientY - startY;

    // no move past world border
    newTranslateX = Math.min(0, Math.max(newTranslateX, -WORLD_SIZE * totalCellSize * scale + grid.width));
    newTranslateY = Math.min(0, Math.max(newTranslateY, -WORLD_SIZE * totalCellSize * scale + grid.height));

    if (newTranslateX !== translateX || newTranslateY !== translateY) {
        translateX = newTranslateX;
        translateY = newTranslateY;
        requestAnimationFrame(render);
    }
}

function endDrag() {
    isDragging = false;
}

function zoom(e) {
    e.preventDefault();
    const zoomFactor = 1 + CAM_ZOOMSENSITIVITY;
    const delta = e.deltaY > 0 ? 1 / zoomFactor : zoomFactor;

    const rect = grid.getBoundingClientRect();
    const mouseX = e.clientX - rect.left;
    const mouseY = e.clientY - rect.top;

    let newScale = scale * delta;
    newScale = Math.max(CAM_MINZOOM, Math.min(CAM_MAXZOOM, newScale));

    if (newScale !== scale) {
        const scaleFactor = newScale / scale;
        translateX = mouseX - (mouseX - translateX) * scaleFactor;
        translateY = mouseY - (mouseY - translateY) * scaleFactor;

        // no zoom past world border
        translateX = Math.min(0, Math.max(translateX, -WORLD_SIZE * totalCellSize * newScale + grid.width));
        translateY = Math.min(0, Math.max(translateY, -WORLD_SIZE * totalCellSize * newScale + grid.height));

        scale = newScale;
        requestAnimationFrame(render);
    }
}

function seededRandom(x, y) {
    const dot = x * 12345 + y * 67890;
    const a = Math.sin(dot + WORLD_SEED) * 43758.5453123;
    return a - Math.floor(a);
}

function getTile(col, row) {
    if (col < 0 || col >= WORLD_SIZE || row < 0 || row >= WORLD_SIZE) {
        return null;
    }

    const key = `${col},${row}`;
    if (tileCache.has(key)) {
        return tileCache.get(key);
    }

    const tileCanvas = document.createElement('canvas');
    tileCanvas.width = TILE_SIZE;
    tileCanvas.height = TILE_SIZE;
    const tileCtx = tileCanvas.getContext('2d');

    const cellImage = seededRandom(col, row) < ONETILE_CHANCE ? oneImage : emptyImage;
    tileCtx.drawImage(cellImage, 0, 0, TILE_SIZE, TILE_SIZE);

    tileCache.set(key, tileCanvas);
    return tileCanvas;
}

function render() {
    ctx.fillStyle = BACKGROUND_COLOR;
    ctx.fillRect(0, 0, grid.width, grid.height);
    ctx.save();
    ctx.translate(translateX, translateY);
    ctx.scale(scale, scale);

    const viewportWidth = grid.width / scale;
    const viewportHeight = grid.height / scale;

    const startCol = Math.max(0, Math.floor(-translateX / (totalCellSize * scale)));
    const endCol = Math.min(WORLD_SIZE - 1, startCol + Math.ceil(viewportWidth / totalCellSize) + 1);
    const startRow = Math.max(0, Math.floor(-translateY / (totalCellSize * scale)));
    const endRow = Math.min(WORLD_SIZE - 1, startRow + Math.ceil(viewportHeight / totalCellSize) + 1);

    for (let row = startRow; row <= endRow; row++) {
        for (let col = startCol; col <= endCol; col++) {
            const x = col * totalCellSize;
            const y = row * totalCellSize;

            const tile = getTile(col, row);
            if (tile) {
                ctx.drawImage(tile, x, y, TILE_SIZE, TILE_SIZE);
            }
        }
    }

    ctx.restore();
}

function initialRender() {
    if (emptyImage.complete && oneImage.complete) {
        render();
    } else {
        requestAnimationFrame(initialRender);
    }
}

initialRender();

// window resize
window.addEventListener('resize', () => {
    resizeCanvas();
    render();
});

thankyou so much for helping!!!!

It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.