# _CoVSCode_: A Novel Real-Time Collaborative Programming Environment for Lightweight IDE
## 6 Prototype Implementation and Evaluations
### Experimental Evaluations
#### 6.3.3 CPU Utilization and Memory Usage  
In addition, two sets of experiments were conducted to measure the CPU utilization and memory usage of the _CoVSCode_ client and the _CoVSCode_ server, respectively. For both experiments, the experimental PC was equipped with an Intel Core i7 @ 2.2 GHz processor, 16 GB of RAM and the macOS 10.14.6 (18G87) operating system.  
Firstly, we monitored the _CoVSCode_ client system's CPU utilization and memory usage for a five-minute duration (with one sample collected per second), in which the programmer was conducting real-time collaborative programming work in a session. The experimental results are illustrated in Figure 11. As observed, the system's resource consumption was satisfactory in both aspects. Compared with the original _VS Code_ IDE, the implemented real-time collaboration plugin (i.e., the client adaptor) did not incur significant extra cost in either the CPU utilization or the memory usage.  
In addition, since _Live Share_ is the official real-time collaboration plugin of _VS Code_, for the sake of comparison, we also monitored the CPU utilization and memory usage of the _VS Code_ with _Live Share_ in a five-minute duration (with one sample collected per second), in which the programmer was conducting real-time collaborative programming work in a session.  
\begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Project** & **Size (Bytes)** & **Items** & **Project Creation** & **Session Joining** \\ \hline PythonCrawler & 46,935 & 28 & 85.869 ms & 75.698 ms \\ koa & 357,477 & 103 & 274.540 ms & 220.318 ms \\ flask & 1,485,367 & 255 & 734.111 ms & 599.690 ms \\ sharedb & 1,994,093 & 111 & 777.637 ms & 559.712 ms \\ python-twitter & 13,617,305 & 261 & 3166.465 ms & 3867.070 ms \\ react & 12,025,260 & 1360 & 3923.432 ms & 2480.144 ms \\ \hline \hline \end{tabular}
\end{table}
Table 4: Average processing times of project creation (involving source code copy upload) and session joining (involving source code copy download).  
Figure 11: CPU utilization and memory usage of the _CoVSCode_ client in a five-minute duration of a real-time collaboration session.  
are illustrated in Figure 12. As observed, the system's resource consumption was also satisfactory, although it was slightly higher than that of _CoVSCode_ presented above.  
Secondly, we monitored the _CoVSCode_ server system's CPU utilization and memory usage for a five-minute duration (with one sample collected per second), in which there was an active session with three collaborating programmers. The experimental results are illustrated in Figure 13. As observed, the resource consumption of the server system was satisfactorily economic, and one critical enabling factor was the design of the system architecture (see Section 4.1), which ensures the server to maintain only lightweight data (e.g., session members) and tasks (e.g., operation relaying), whereas most heavyweight jobs (such as local operation detection and remote operation replay) are distributed at each client. This also implies the system's good scalability for hosting large numbers of concurrent real-time collaboration sessions and active collaborating programmers.  
Figure 12: CPU utilization and memory usage of the _VS Code with Live Share_ in a five-minute duration of a real-time collaboration session.  
Figure 13: _Cont._