Latency ve Response Time Arasında ki Fark

Eğer performance optimizasyonu yaptıysanız, bu iki kelimeyi duymamanız hemen hemen imkansız gibi. Genelde birbirlerine çok benzeyen bu iki kelime bazen aynı manada kullanılsa da aslında tam olarak aynı değiller. Bu yazımda, aralarında ki farkları incelemeye çalışacağız. Hatta sizler için aşağıda ki resimleri ve diagramları bile çizdim.

Ben bu kavramları bir web uygulaması yada herhangi bir remote API call contextlerinden değerlendireceğim, çünkü genelde aralarında ki fark en bariz olarak bu ortamlarda gözüküyor.

Latency

Latency aslında latent kelimesinden geliyor. Yani görülmeyen, atıl, aktif olmayan gibi manaları var. Dolayısıyla mesajınızın bir network ağı üzerinden sunucuya ulaşana kadar geçirdiği zamanı gösteriyor. Daha basit anlatımıyla, bir isteğin hedef sunucuya ulaşana kadar geçirdiği zaman. Aynı zamanda, sunucudan gönderilen cevabında kullanıcı bilgisayarına ulaşana kadar geçirdiği zamanda latency olarak adlandırılır. Buradan latency kavramının genel bir ifade olduğu ve bir mesajın işe yarar bir yere gidene kadar geçirdiği zaman olarak anlaşıldığı görülüyor. Bunu mesela RAM’den alınan bir mesajın CPU’ya gelene kadar geçirdiği zaman, yada harddiske kaydetmek istediğiniz bir byte verinin oraya gidene kadar yolda geçirdiği zaman olarak bile düşünebilirsiniz. Bu son verdiğim örnekler de ki latency çoğu zaman çok küçük olduğundan performance ölçümlerinde pek göz önünde bulundurulmazlar.

Network örneğine dönersek, bir sunucunun nerede bulunduğu latency miktarını değiştirebilir. Sunucu ne kadar yakınsa latency genelde o kadar düşük olur. Ama unutulmaması gereken bir şey, sadece uzaklık değil, aynı zamanda network ağında ki fiziksel cihazların performansı, networkta meydana gelen tıkanmalar gibi başka faktörlerde latency süresini uzatacağından uygulamanızın zayıf bir performance sergilenmesine neden olabilirler. Latency sorunları genelde hardware ile alakalı olduğundan düzeltmek için elimizde çok bir seçenek olmaz. Çözümlerden bir tanesi remote API çağrılarını azaltmak olacaktır. Ne kadar az çağrı yaparsak, o kadar az latency ile uğraşmış oluruz.

Response Time

Latency kavramından farklı olarak response time kavramında processing time da devreye girer. Bir isteğin sunucuda process edilip response olarak kullanıcıya gönderilmeye hazır hale gelene kadar geçirdiği zamana processing time dediğimizde, basit bir hesaplama ile:

Response Time = Request Latency + Response Latency + Processing Time.

Burada response time biraz daha detaylı incelenebilinir. Ama bundan önce TTFB kavramını anlamak faydalı olacaktır.

TTFB (Time to First Byte)

Eğer Google Chrome Developer Tools kullanıyorsanız, bu kavramı görmememiş olmanız neredeyse imkansız. Ama tam olarak ne olduğunu bilmiyorsanız, bir istediğin gönderilip, sunucuda işlendikten sonra, cevabın ilk byte’ın gerisin geri kullanıcıya döneceği ana kadar geçen zamana deniyor. Aslında adına baktığınızda, ilk byte a gelene kadar geçen zaman dediğini göreceksiniz. Genelde ilk byte geldiğinde devamıda geleceğinden, önemli olan bu ilk byte verinin kullanıcıya geldiği andır. Çünkü gerisi indirilen verinin miktarına göre değişeceğinden geçen zaman uzayıp kısalabilir.

Yukarıda ki resim anlatmak istediği gayet açık bir şekilde gösteriyor diye umuyorum.

Şimdi response time isterseniz TTFB olarak görülebilinir yada kullanıcı acısından bakıldığında ekranda bir şey görülene kadar ölçülebilinir. Mesela kullanıcı bir web sayfasında adres verisi kaydetmek istediğinde, kaydet tuşuna tıkladığı andan, karşısına kaydedildi mesajı çıkana kadar geçen zamanı siz response time olarak alabilirsiniz. Burada daha hangi kriteri göz önünde bulundaracağınız size ve performans olarak neyi önemli gördüğünüze bağlı.

Bir sonra ki yazımda görüşmek üzere…