File size: 3,751 Bytes
d34692c
 
 
 
 
 
ffd7c1e
d34692c
ffd7c1e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755dfbe
ffd7c1e
 
 
 
 
755dfbe
ffd7c1e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755dfbe
 
 
 
 
 
d34692c
 
 
 
 
ffd7c1e
755dfbe
 
ffd7c1e
 
 
 
 
755dfbe
 
ffd7c1e
 
 
d34692c
 
 
ffd7c1e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d34692c
 
ffd7c1e
 
 
 
 
 
 
d34692c
ffd7c1e
d34692c
ffd7c1e
 
 
 
 
 
d34692c
ffd7c1e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Device Performance Checker</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <script>
        let cpuData = [];
        let gpuData = [];
        let labels = [];
        let interval;
        let startTime;
        let chart;

        function generateChart() {
            const ctx = document.getElementById('performanceChart').getContext('2d');
            chart = new Chart(ctx, {
                type: 'line',
                data: {
                    labels: labels,
                    datasets: [
                        {
                            label: 'CPU Usage (%)',
                            data: cpuData,
                            borderColor: 'red',
                            fill: false
                        },
                        {
                            label: 'GPU Info',
                            data: gpuData,
                            borderColor: 'blue',
                            fill: false
                        }
                    ]
                },
                options: {
                    responsive: true,
                    maintainAspectRatio: false,
                    scales: {
                        x: {
                            title: {
                                display: true,
                                text: 'Time (s)'
                            }
                        },
                        y: {
                            title: {
                                display: true,
                                text: 'Performance'
                            }
                        }
                    }
                }
            });
        }

        function getCPUUsage() {
            if (window.performance.memory) {
                return (window.performance.memory.usedJSHeapSize / window.performance.memory.totalJSHeapSize) * 100;
            } else {
                return Math.random() * 100; // Fallback (mock data)
            }
        }

        function getGPUInfo() {
            const canvas = document.createElement("canvas");
            const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
            if (!gl) return 0;
            const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
            return debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : "Unknown";
        }

        function updatePerformanceData() {
            const elapsed = ((performance.now() - startTime) / 1000).toFixed(1);
            labels.push(elapsed);
            cpuData.push(getCPUUsage().toFixed(2));
            gpuData.push(getGPUInfo());

            if (chart) {
                chart.update();
            }
        }

        function startBenchmark() {
            cpuData = [];
            gpuData = [];
            labels = [];
            startTime = performance.now();

            if (!chart) {
                generateChart();
            }

            interval = setInterval(updatePerformanceData, 1000);
        }

        function stopBenchmark() {
            clearInterval(interval);
        }
    </script>
    <style>
        #chart-container {
            width: 80%;
            height: 400px;
            margin: auto;
        }
    </style>
</head>
<body>
    <h1>Device Performance Checker</h1>
    <p>Click Start to begin performance tracking.</p>
    <button onclick="startBenchmark()">Start</button>
    <button onclick="stopBenchmark()">Stop</button>
    <div id="chart-container">
        <canvas id="performanceChart"></canvas>
    </div>
</body>
</html>