### Godot version

4.0.stable

### System information

Ubuntu, AMD Ryzen 5 2600, GTX 1650, Vulkan

### Issue description

When putting Tilemaps with lots of tiles on Parallaxlayers, it massively slows down Godot from roughly around 600fps to 20fps. This happens whether or not the parallaxlayers are invisible, have lightoccluder information, or have collision. It seems just the process of having lots of tiles exist slows it down. 

### Steps to reproduce

Open the minimal project and convert the 2 parallaxlayers from parallaxlayers to basic node2ds and watch the FPS massively increase.

### Minimal reproduction project

[ParallaxTilemap.zip](https://github.com/godotengine/godot/files/11566812/ParallaxTilemap.zip)

int get_layers_count() const;
	void add_layer(int p_to_pos);
	void move_layer(int p_layer, int p_to_pos);
	void remove_layer(int p_layer);
	void set_layer_name(int p_layer, String p_name);
	String get_layer_name(int p_layer) const;
	void set_layer_enabled(int p_layer, bool p_visible);
	bool is_layer_enabled(int p_layer) const;
	void set_layer_modulate(int p_layer, Color p_modulate);
	Color get_layer_modulate(int p_layer) const;
	void set_layer_y_sort_enabled(int p_layer, bool p_enabled);
	bool is_layer_y_sort_enabled(int p_layer) const;
	void set_layer_y_sort_origin(int p_layer, int p_y_sort_origin);
	int get_layer_y_sort_origin(int p_layer) const;
	void set_layer_z_index(int p_layer, int p_z_index);
	int get_layer_z_index(int p_layer) const;
	void set_selected_layer(int p_layer_id); 
	int get_selected_layer() const;
	void set_collision_animatable(bool p_enabled);
	bool is_collision_animatable() const;
	
	void set_collision_visibility_mode(VisibilityMode p_show_collision);
	VisibilityMode get_collision_visibility_mode();
	void set_navigation_visibility_mode(VisibilityMode p_show_navigation);
	VisibilityMode get_navigation_visibility_mode();
	void set_navigation_map(int p_layer, RID p_map);
	RID get_navigation_map(int p_layer) const;
	
	void set_cell(int p_layer, const Vector2i &p_coords, int p_source_id = TileSet::INVALID_SOURCE, const Vector2i p_atlas_coords = TileSetSource::INVALID_ATLAS_COORDS, int p_alternative_tile = 0);
	void erase_cell(int p_layer, const Vector2i &p_coords);