Skip to main content

Optimise performance

Profile and optimise GDI application performance.

Frontend performance

React optimisation

Use React DevTools Profiler to identify slow components:

import { memo } from "react";

// Memoize expensive components
export const DatasetList = memo(({ datasets }) => {
return datasets.map((dataset) => (
<DatasetCard key={dataset.id} {...dataset} />
));
});

Bundle analysis

Analyse bundle size:

npm run build
npm run analyze

Reduce bundle size with dynamic imports:

const HeavyComponent = dynamic(() => import("./HeavyComponent"));

Backend performance

Database optimisation

Add indexes for frequent queries:

CREATE INDEX idx_dataset_owner ON datasets(owner_id);

Use connection pooling in application.properties:

quarkus.datasource.jdbc.max-size=20
quarkus.datasource.jdbc.min-size=5

Caching

Cache frequent queries with @CacheResult:

@CacheResult(cacheName = "datasets")
public Dataset findById(Long id) {
return repository.findById(id);
}

CKAN performance

Optimise Solr queries and enable result caching. See CKAN performance documentation.