es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pregunta sobre los resultados de rendimiento mixto de Python en PC vs smartphone.

Realicé una comparación de rendimiento de Python en una PC y un smartphone y los resultados fueron confusos.

PC: i7-8750H / 32GB RAM / 1TB SSD / Windows 10
Smartphone: Galaxy S10 con emulador Linux Termux en Android 11

El primero fue una simple simulación de Monte Carlo con el siguiente código.

import random
import time

def monte_carlo_pi(n_samples: int):
    acc = 0
    for i in range(n_samples):
        x = random.random()
        y = random.random()
        if (x**2 + y**2) < 1.0:
            acc += 1
    return 4.0 * acc / n_samples

start_time = time.time()

print(monte_carlo_pi(10000000))
print(time.time()-start_time)

Sorprendentemente, tardó alrededor de 5,2 segundos en la PC y 2,7 segundos en el smartphone.

El segundo usó pandas con algunas operaciones de dataframe.

import pandas as pd
import time

start_time = time.time()

df = pd.DataFrame(
    [ [21, 72, -67], 
      [23, 78, 62],
      [32, 74, 54],
      [52, 54, 76],
      [0, 23, 66],
      [2, 1, 2] ],
    index = [11, 22, 33, 44, 55, 66],
    columns = ['a', 'b', 'c'])

df2 = pd.DataFrame()

df2 = pd.concat([df2, df['a']], axis=1)
df2 = pd.concat([df2, df['c']], axis=1)

print(df2)
print(time.time()-start_time)

Esta vez, la PC tardó alrededor de 0,007 segundos y el smartphone alrededor de 0,009 segundos, pero el tiempo real de ejecución en el smartphone fue de alrededor de 2 segundos. Mi suposición es que al smartphone le lleva más tiempo cargar el paquete largo de pandas, pero no estoy seguro.

  1. ¿Es el procesador ARM más rápido en cálculos simples y repetitivos? ¿O ninguno de los procesadores está utilizando la capacidad multi-core?
  2. ¿Es el smartphone relativamente lento para leer paquetes largos como se observó anteriormente?
  3. ¿Hay una mejor manera de medir el rendimiento general de Python entre una PC y un smartphone?
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo garantizar la exactitud de las respuestas, pero aquí hay una posible respuesta a las preguntas basada en la información proporcionada.

    1. Es difícil hacer una declaración general sobre el rendimiento de los procesadores ARM vs x86 para todo tipo de cálculos, ya que depende de muchos factores como la arquitectura específica, la velocidad de reloj, el ancho de banda de memoria, etc. Sin embargo, en el caso de la simulación de Monte Carlo, es posible que el procesador del smartphone (que supongo que es un Qualcomm Snapdragon 855 basado en ARM) haya rendido mejor que el procesador de la PC debido a su mayor velocidad de reloj y/o mejor juego de instrucciones para operaciones de punto flotante. En cuanto a la capacidad multinúcleo, el código de simulación de Monte Carlo no parece estar paralelizado, por lo que solo utilizaría un núcleo en ambos sistemas.
    2. Es posible que el rendimiento más lento del smartphone para el código de pandas se deba a la sobrecarga de carga e inicialización del paquete pandas, que es una biblioteca relativamente grande en comparación con el tamaño del código de ejemplo. Sin embargo, otros factores como la velocidad de E/S del almacenamiento y el tamaño y la velocidad de la memoria también podrían ser relevantes. Además, tenga en cuenta que el código de pandas no hace muchos cálculos en comparación con la simulación de Monte Carlo, por lo que la diferencia de rendimiento podría estar dominada por el tiempo de E/S e inicialización en lugar del tiempo real de cálculo.
    3. Para medir el rendimiento general de Python entre la PC y el teléfono inteligente, es importante considerar una variedad de cargas de trabajo que sean representativas de los casos de uso típicos para los sistemas. Los dos ejemplos dados aquí son bastante diferentes en naturaleza, por lo que es posible que no sean muy indicativos del rendimiento general. Algunos enfoques posibles para la evaluación del rendimiento de Python incluyen el uso de herramientas de evaluación de rendimiento especializadas como PyBench o la comparación del rendimiento de aplicaciones del mundo real que sean relevantes para los casos de uso específicos. También es importante asegurarse de que los sistemas estén correctamente configurados y sean comparables en términos de especificaciones de hardware, configuración de software y otros factores que podrían afectar el rendimiento.

Comments are closed.