Research_AI_Assistant / performance_optimizations.py
JatsTheAIGen's picture
Initial commit V1
66dbebd
raw
history blame
3.77 kB
# performance_optimizations.py
class MobilePerformance:
"""
Performance optimizations specifically for mobile devices
"""
def __init__(self):
self.optimization_config = {
"mobile_max_tokens": 800,
"mobile_timeout": 15000, # 15 seconds for mobile
"cache_aggressive": True,
"lazy_loading": True
}
async def optimize_for_mobile(self, processing_function, *args, **kwargs):
"""
Apply mobile-specific performance optimizations
"""
# Reduce processing load for mobile
kwargs.update({
'max_tokens': self.optimization_config['mobile_max_tokens'],
'timeout': self.optimization_config['mobile_timeout']
})
# Implement progressive loading for better perceived performance
return await self._progressive_loading(processing_function, *args, **kwargs)
async def _progressive_loading(self, processing_function, *args, **kwargs):
"""
Stream responses progressively for better mobile UX
"""
# This would integrate with streaming LLM responses
async for chunk in processing_function(*args, **kwargs):
yield chunk
@staticmethod
def get_mobile_optimized_css():
"""
CSS optimizations for mobile performance
"""
return """
/* Hardware acceleration for mobile */
.chatbot-container {
transform: translateZ(0);
-webkit-transform: translateZ(0);
}
/* Reduce animations for better performance */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* Optimize images and media */
img {
max-width: 100%;
height: auto;
}
/* Touch device optimizations */
@media (hover: none) and (pointer: coarse) {
.gradio-button:hover {
background-color: initial !important;
}
}
"""
def is_mobile_device(self, user_agent: str) -> bool:
"""
Detect if request is from mobile device
"""
mobile_keywords = ['mobile', 'android', 'iphone', 'ipad', 'ipod', 'blackberry', 'windows phone']
user_agent_lower = user_agent.lower()
return any(keyword in user_agent_lower for keyword in mobile_keywords)
def get_optimization_params(self, user_agent: str) -> dict:
"""
Get optimization parameters based on device type
"""
if self.is_mobile_device(user_agent):
return {
'max_tokens': self.optimization_config['mobile_max_tokens'],
'timeout': self.optimization_config['mobile_timeout'],
'cache_mode': 'aggressive' if self.optimization_config['cache_aggressive'] else 'normal',
'lazy_load': self.optimization_config['lazy_loading']
}
else:
return {
'max_tokens': 2000, # Desktop gets more tokens
'timeout': 30000, # 30 seconds for desktop
'cache_mode': 'normal',
'lazy_load': False
}
def enable_aggressive_caching(self):
"""
Enable aggressive caching for improved performance
"""
self.optimization_config['cache_aggressive'] = True
def disable_aggressive_caching(self):
"""
Disable aggressive caching
"""
self.optimization_config['cache_aggressive'] = False