SlideShare a Scribd company logo
1 of 1
Steps of preview icons creation.

   1) When icon preview needs it be displayed, the application looks up preview cache for existing
      preview. If preview isn’t in cache, application sends request for preview.
   2) Each individual preview request isn’t sent to MX server. Instead, requests are added to queue to
      be sent to server in a bunch with previewer/covers request.
   3) This is how the queue works: when the first request is added to the queue, a timer is started with
      expiration time of 0.1 second. Since we usually need to display several previews, while the timer
      is running more previews are added to the queue. At timer expiration all items from already
      enqueued requests are added to the MX server previewer/covers request and request is
      sent to server.
   4) Data received from the server are parsed continuously, each time when application gets a piece
      of data from the server. When parser encounters boundary marker between individual preview
      images, an image object is created and request that asked for this image is notified about its
      successful completion. So it is not needed to wait for previewer/covers request completion
      to display item’s preview if it’s already received.
   5) Image that is displayed on the screen doesn’t have the same size as image sent by the server.
      Resizing of the image is started when application gets image from the server. This operation is
      performed in the separate low priority thread to not delay network data processing.

Investigation shows that time needed to receive full response from the server doesn’t depend on whether
we perform data processing or not. For example, without processing receiving previews for 10 images
takes approximately from 35 to 65 seconds with average time 45 seconds (in 10 runs). With processing
and image resizing it takes about the same time. Amount of data received by network connection in one
time can change from 1500 bytes to 50000 bytes. This is what changes time to get response.

More Related Content

What's hot

Building cautious software
Building cautious softwareBuilding cautious software
Building cautious software
Kyle Dyer
 

What's hot (7)

Cloud Delivery
Cloud DeliveryCloud Delivery
Cloud Delivery
 
Reactive Programming in .Net - actorbased computing with Akka.Net
Reactive Programming in .Net - actorbased computing with Akka.NetReactive Programming in .Net - actorbased computing with Akka.Net
Reactive Programming in .Net - actorbased computing with Akka.Net
 
The Future Of Work And Workflow
The Future Of Work And WorkflowThe Future Of Work And Workflow
The Future Of Work And Workflow
 
Reactive applications with Akka.Net - DDD East Anglia 2015
Reactive applications with Akka.Net - DDD East Anglia 2015Reactive applications with Akka.Net - DDD East Anglia 2015
Reactive applications with Akka.Net - DDD East Anglia 2015
 
Load Testing Serverless Applications And Understanding How Lambda Scales
Load Testing Serverless Applications And Understanding How Lambda ScalesLoad Testing Serverless Applications And Understanding How Lambda Scales
Load Testing Serverless Applications And Understanding How Lambda Scales
 
HasGeek Meteor Workshop
HasGeek Meteor WorkshopHasGeek Meteor Workshop
HasGeek Meteor Workshop
 
Building cautious software
Building cautious softwareBuilding cautious software
Building cautious software
 

Similar to Steps of preview icons creation

J2 me based file transfer and storage system architecture
J2 me based file transfer and storage system   architectureJ2 me based file transfer and storage system   architecture
J2 me based file transfer and storage system architecture
penubarthhy
 
It Launch Plan
It Launch PlanIt Launch Plan
It Launch Plan
tcaesar
 

Similar to Steps of preview icons creation (20)

Non functional performance requirements v2.2
Non functional performance requirements v2.2Non functional performance requirements v2.2
Non functional performance requirements v2.2
 
J2 me based file transfer and storage system architecture
J2 me based file transfer and storage system   architectureJ2 me based file transfer and storage system   architecture
J2 me based file transfer and storage system architecture
 
Using Kafka on Event-driven Microservices Architectures - Apache Kafka Meetup
Using Kafka on Event-driven Microservices Architectures - Apache Kafka MeetupUsing Kafka on Event-driven Microservices Architectures - Apache Kafka Meetup
Using Kafka on Event-driven Microservices Architectures - Apache Kafka Meetup
 
Search on the fly: how to lighten your Big Data - Simona Russo, Auro Rolle - ...
Search on the fly: how to lighten your Big Data - Simona Russo, Auro Rolle - ...Search on the fly: how to lighten your Big Data - Simona Russo, Auro Rolle - ...
Search on the fly: how to lighten your Big Data - Simona Russo, Auro Rolle - ...
 
Difference between Client Polling vs Server Push vs Websocket vs Long Polling
Difference between Client Polling vs Server Push vs Websocket vs Long PollingDifference between Client Polling vs Server Push vs Websocket vs Long Polling
Difference between Client Polling vs Server Push vs Websocket vs Long Polling
 
Micro Services
Micro ServicesMicro Services
Micro Services
 
It Launch Plan
It Launch PlanIt Launch Plan
It Launch Plan
 
Data Transfer between Activities & Databases
Data Transfer between Activities & DatabasesData Transfer between Activities & Databases
Data Transfer between Activities & Databases
 
UOW-Caching and new ways to improve response time (Paper)
UOW-Caching and new ways to improve response time (Paper)UOW-Caching and new ways to improve response time (Paper)
UOW-Caching and new ways to improve response time (Paper)
 
Analysis of a Pool Management Scheme for Cloud Computing Centres by Using Par...
Analysis of a Pool Management Scheme for Cloud Computing Centres by Using Par...Analysis of a Pool Management Scheme for Cloud Computing Centres by Using Par...
Analysis of a Pool Management Scheme for Cloud Computing Centres by Using Par...
 
OptiSol Microservices Architecture - Tech Meetup
OptiSol Microservices Architecture - Tech Meetup OptiSol Microservices Architecture - Tech Meetup
OptiSol Microservices Architecture - Tech Meetup
 
Service workers in JavaScript
Service workers in JavaScriptService workers in JavaScript
Service workers in JavaScript
 
Bi35339342
Bi35339342Bi35339342
Bi35339342
 
Back-End application for Distributed systems
Back-End application for Distributed systemsBack-End application for Distributed systems
Back-End application for Distributed systems
 
EPC Group's - Microsoft SharePoint Health Check Methodology
EPC Group's - Microsoft SharePoint Health Check MethodologyEPC Group's - Microsoft SharePoint Health Check Methodology
EPC Group's - Microsoft SharePoint Health Check Methodology
 
CA Security Communities Webcast - CA SSO Performance Testing with CA BlazeMeter
CA Security Communities Webcast - CA SSO Performance Testing with CA BlazeMeterCA Security Communities Webcast - CA SSO Performance Testing with CA BlazeMeter
CA Security Communities Webcast - CA SSO Performance Testing with CA BlazeMeter
 
Servlet session 1
Servlet   session 1Servlet   session 1
Servlet session 1
 
Microservices
MicroservicesMicroservices
Microservices
 
EAI design patterns/best practices
EAI design patterns/best practicesEAI design patterns/best practices
EAI design patterns/best practices
 
Azure Spring Cloud Workshop - June 17, 2020
Azure Spring Cloud Workshop - June 17, 2020Azure Spring Cloud Workshop - June 17, 2020
Azure Spring Cloud Workshop - June 17, 2020
 

Steps of preview icons creation

  • 1. Steps of preview icons creation. 1) When icon preview needs it be displayed, the application looks up preview cache for existing preview. If preview isn’t in cache, application sends request for preview. 2) Each individual preview request isn’t sent to MX server. Instead, requests are added to queue to be sent to server in a bunch with previewer/covers request. 3) This is how the queue works: when the first request is added to the queue, a timer is started with expiration time of 0.1 second. Since we usually need to display several previews, while the timer is running more previews are added to the queue. At timer expiration all items from already enqueued requests are added to the MX server previewer/covers request and request is sent to server. 4) Data received from the server are parsed continuously, each time when application gets a piece of data from the server. When parser encounters boundary marker between individual preview images, an image object is created and request that asked for this image is notified about its successful completion. So it is not needed to wait for previewer/covers request completion to display item’s preview if it’s already received. 5) Image that is displayed on the screen doesn’t have the same size as image sent by the server. Resizing of the image is started when application gets image from the server. This operation is performed in the separate low priority thread to not delay network data processing. Investigation shows that time needed to receive full response from the server doesn’t depend on whether we perform data processing or not. For example, without processing receiving previews for 10 images takes approximately from 35 to 65 seconds with average time 45 seconds (in 10 runs). With processing and image resizing it takes about the same time. Amount of data received by network connection in one time can change from 1500 bytes to 50000 bytes. This is what changes time to get response.