5a3be3af33b76d69d1fc98ee76b9a37f96e96fc7
max
  Wed Aug 26 00:36:52 2026 -0700
Add opt-in per-phase request timing to the new hgBlat and hgSession pages, shown in a dialog with &measureTiming=1. refs #38157

New reusable perfTimer collector (lib/perfTimer.c) records labeled wall-clock intervals via clock1000() and emits them as JSON; hgBlat and hgSession attach a timing array to their payload when the existing measureTiming cart/CGI var is set. A shared gbShowTimingDialog helper in utils.js renders the server phases plus a client render-time row in a house-style modal, which opens automatically when measureTiming is on. Confirms the position band/locus annotation loop dominates hgSession, and run-BLAT plus locus lookups dominate hgBlat.

diff --git src/lib/makefile src/lib/makefile
index b17d260f20c..cd9b3be5fcf 100644
--- src/lib/makefile
+++ src/lib/makefile
@@ -22,31 +22,31 @@
     font/mgHelveticaBold14.o font/mgHelveticaBold18.o font/mgHelveticaBold24.o \
     font/mgHelveticaBold34.o font/mgHelveticaBold8.o font/mgSixhi6.o font/mgSail8.o \
     font/mgTimes10.o font/mgTimes12.o font/mgTimes14.o font/mgTimes18.o \
     font/mgTimes24.o font/mgTimes34.o font/mgTimes8.o font/mgMenlo12.o \
     fq.o freeType.o fuzzyShow.o \
     gapCalc.o gdf.o gemfont.o genomeRangeTree.o \
     gfNet.o gff.o gff3.o gfxPoly.o gifLabel.o \
     hacTree.o hash.o hex.o hfileUdc.o histogram.o hmmPfamParse.o hmmstats.o htmlColor.o htmlPage.o htmshell.o \
     hmac.o https.o intExp.o intValTree.o internet.o itsa.o iupac.o \
     jointalign.o jpegSize.o jsonParse.o jsonQuery.o jsonWrite.o \
     keys.o knetUdc.o kxTok.o linefile.o lineFileOnBigBed.o localmem.o log.o longTabix.o longToList.o \
     maf.o mafFromAxt.o mafScore.o mailViaPipe.o md5.o \
     matrixMarket.o memalloc.o memgfx.o meta.o metaWig.o mgCircle.o \
     mgPolygon.o mime.o mmHash.o net.o nib.o nibTwo.o nt4.o numObscure.o \
     obscure.o oldGff.o oligoTm.o options.o osunix.o pairHmm.o pairDistance.o \
-    paraFetch.o peakCluster.o \
+    paraFetch.o peakCluster.o perfTimer.o \
     phyloTree.o pipeline.o portimpl.o pngwrite.o psGfx.o psPoly.o pscmGfx.o \
     psl.o pslGenoShow.o pslShow.o pslTbl.o pslTransMap.o pthreadDoList.o pthreadWrap.o \
     qa.o quickHeap.o quotedP.o \
     ra.o rainbow.o raToStruct.o rbTree.o rangeTree.o regexHelper.o repMask.o \
     rle.o rnautil.o rqlEval.o rqlParse.o rqlToSql.o rudp.o \
     scoreWindow.o seg.o seqOut.o seqStats.o servBrcMcw.o servCrunx.o \
     servcis.o servcl.o servmsII.o servpws.o shaRes.o slog.o snof.o \
     snofmake.o snofsig.o spaceSaver.o spacedColumn.o spacedSeed.o \
     sparseMatrix.o splatAli.o sqlList.o sqlNum.o sqlReserved.o strex.o subText.o sufa.o sufx.o synQueue.o \
     tabRow.o tagSchema.o tagStorm.o tagToJson.o tagToSql.o textOut.o tokenizer.o trix.o twoBit.o \
     udc.o uuid.o vcf.o vcfBits.o vGfx.o vPng.o verbose.o vMatrix.o \
     wildcmp.o windowsToAscii.o wormdna.o \
     xAli.o xa.o xap.o xenshow.o xmlEscape.o xp.o zlibFace.o curlWrap.o
 
 $(MACHTYPE)/jkweb.a: $(O) $(MACHTYPE)