Server-Based Binary Compilation for Client Architecture Adaptation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Client-side application compilation is inefficient due to limited processing power, RAM, and storage on client computing devices, leading to lightweight compilation and unnecessary software libraries being downloaded, which wastes bandwidth.
Innovation Solution
A server-based system that stores optimized binaries for various client architectures, allowing for the delivery of specifically tailored binaries to clients based on their architecture and usage patterns, with the option to update binaries post-download based on user profile information.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If client computing devices perform local compilation of applications, then application execution is enabled on diverse hardware architectures, but compilation quality is insufficient due to limited processing power, RAM, and storage capabilities
Solution Approach 1:
The compilation process is segmented between server and client: the server performs high-quality compilation for different hardware architectures while the client only needs to download and execute the pre-compiled binary. This division allows the client to maintain versatility across architectures without needing local compilation capabilities.
Solution Approach 2:
The server acts as an intermediary that performs the compilation operation. Instead of the client compiling applications locally, the server receives application code, compiles it for specific hardware architectures, and delivers the optimized binary to the client, thereby improving compilation quality without requiring powerful local hardware.
2Adaptability or versatility
If applications include extra software libraries to emulate missing hardware capabilities, then compatibility with devices lacking certain hardware is improved, but bandwidth consumption increases due to unnecessary downloads
Solution Approach 1:
Instead of providing universal software libraries that work for all devices, the system generates architecture-specific binaries tailored to each device's hardware capabilities. This allows each client to receive only the necessary components for their specific architecture, reducing bandwidth consumption while maintaining hardware compatibility.
Solution Approach 2:
The system changes the parameter of binary architecture based on the client device's hardware characteristics. By detecting the client's architecture and generating corresponding optimized binaries, the system eliminates the need for clients to download unnecessary universal libraries, thereby reducing bandwidth usage while maintaining compatibility.
3Productivity
If server provides architecture-specific optimized binaries, then application execution performance is improved, but system complexity increases due to maintenance of multiple binary variants
Solution Approach 1:
The system uses feedback from client architecture information to automatically select and provide the appropriate binary variant. Client devices send their architecture details to the server, which then automatically determines and delivers the matching optimized binary, reducing the complexity of manual binary management while maintaining high execution performance.
Data Source
AI summary
A computer-implemented method for compilation of applications includes storing, at a server, a plurality of variants, wherein each of the plurality of variants describes a distinct client architecture. A plurality of optimized binaries for an application are maintained at the server, wherein the plurality of optimized binaries correspond to different variants in the plurality of variants. The server receives a request from a client to download the application, wherein the request includes a reference to a first variant that describes the client's architecture. A determination is made that the first variant corresponds to a first optimized binary of the plurality of optimized binaries, and the server provides the first optimized binary to the client.


