sourize commited on
Commit
206fb7a
·
1 Parent(s): db43315

Updated Code

Browse files
Files changed (1) hide show
  1. utils/performance_optimizer.py +36 -41
utils/performance_optimizer.py CHANGED
@@ -5,47 +5,42 @@ Performance optimization utilities for Manim rendering
5
  import re
6
  from typing import Dict, Tuple
7
 
8
- # Quality settings for different performance levels
9
- QUALITY_SETTINGS = {
10
- "low_quality": {
11
- "flag": "-ql",
12
- "description": "Low Quality (Fast)",
13
- "resolution": "480p",
14
- "fps": 30,
15
- "max_duration": 10,
16
- "max_objects": 20,
17
- "performance_threshold": {
18
- "render_time": 60, # seconds
19
- "memory_usage": 1024 # MB
20
- }
21
- },
22
- "medium_quality": {
23
- "flag": "-qm",
24
- "description": "Medium Quality (Balanced)",
25
- "resolution": "720p",
26
- "fps": 30,
27
- "max_duration": 15,
28
- "max_objects": 30,
29
- "performance_threshold": {
30
- "render_time": 180, # seconds
31
- "memory_usage": 2048 # MB
32
- }
33
- }
34
- }
35
-
36
  class PerformanceOptimizer:
37
  """Optimize rendering performance and resource usage"""
38
 
39
- # Performance thresholds
40
- RENDER_TIME_THRESHOLDS = {
41
- "low_quality": 60,
42
- "medium_quality": 180
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  }
44
 
45
- # Memory usage thresholds (in GB)
46
- MEMORY_THRESHOLDS = {
47
- "low_quality": 4.0,
48
- "medium_quality": 6.0
 
49
  }
50
 
51
  @classmethod
@@ -178,26 +173,26 @@ class PerformanceOptimizer:
178
  return tips
179
 
180
  def optimize_quality(self, available_memory: float, estimated_render_time: float) -> str:
181
- if available_memory < self.MEMORY_THRESHOLDS["low_quality"]:
182
  return "low_quality"
183
- if estimated_render_time > self.RENDER_TIME_THRESHOLDS["medium_quality"]:
184
  return "low_quality"
185
  return "medium_quality"
186
 
187
  @staticmethod
188
  def estimate_render_time(quality_level: str) -> int:
189
  """Estimate render time based on quality level"""
190
- return QUALITY_SETTINGS[quality_level]["performance_threshold"]["render_time"]
191
 
192
  @staticmethod
193
  def get_quality_settings(quality_level: str) -> dict:
194
  """Get quality settings for the specified level"""
195
- return QUALITY_SETTINGS[quality_level]
196
 
197
  @staticmethod
198
  def optimize_for_performance(quality_level: str, scene_complexity: int) -> dict:
199
  """Optimize settings based on quality level and scene complexity"""
200
- settings = QUALITY_SETTINGS[quality_level].copy()
201
 
202
  # Adjust settings based on scene complexity
203
  if scene_complexity > settings["max_objects"]:
 
5
  import re
6
  from typing import Dict, Tuple
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  class PerformanceOptimizer:
9
  """Optimize rendering performance and resource usage"""
10
 
11
+ # Quality settings for different performance levels
12
+ QUALITY_SETTINGS = {
13
+ "low_quality": {
14
+ "flag": "-ql",
15
+ "description": "Low Quality (Fast)",
16
+ "resolution": "480p",
17
+ "fps": 30,
18
+ "max_duration": 10,
19
+ "max_objects": 20,
20
+ "performance_threshold": {
21
+ "render_time": 60, # seconds
22
+ "memory_usage": 1024 # MB
23
+ }
24
+ },
25
+ "medium_quality": {
26
+ "flag": "-qm",
27
+ "description": "Medium Quality (Balanced)",
28
+ "resolution": "720p",
29
+ "fps": 30,
30
+ "max_duration": 15,
31
+ "max_objects": 30,
32
+ "performance_threshold": {
33
+ "render_time": 180, # seconds
34
+ "memory_usage": 2048 # MB
35
+ }
36
+ }
37
  }
38
 
39
+ # Performance thresholds
40
+ PERFORMANCE_THRESHOLDS = {
41
+ "render_time": 300, # seconds
42
+ "memory_usage": 4096, # MB
43
+ "cpu_usage": 80 # percentage
44
  }
45
 
46
  @classmethod
 
173
  return tips
174
 
175
  def optimize_quality(self, available_memory: float, estimated_render_time: float) -> str:
176
+ if available_memory < self.PERFORMANCE_THRESHOLDS["memory_usage"]:
177
  return "low_quality"
178
+ if estimated_render_time > self.PERFORMANCE_THRESHOLDS["render_time"]:
179
  return "low_quality"
180
  return "medium_quality"
181
 
182
  @staticmethod
183
  def estimate_render_time(quality_level: str) -> int:
184
  """Estimate render time based on quality level"""
185
+ return PerformanceOptimizer.QUALITY_SETTINGS[quality_level]["performance_threshold"]["render_time"]
186
 
187
  @staticmethod
188
  def get_quality_settings(quality_level: str) -> dict:
189
  """Get quality settings for the specified level"""
190
+ return PerformanceOptimizer.QUALITY_SETTINGS[quality_level]
191
 
192
  @staticmethod
193
  def optimize_for_performance(quality_level: str, scene_complexity: int) -> dict:
194
  """Optimize settings based on quality level and scene complexity"""
195
+ settings = PerformanceOptimizer.QUALITY_SETTINGS[quality_level].copy()
196
 
197
  # Adjust settings based on scene complexity
198
  if scene_complexity > settings["max_objects"]: