Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

283
Views
¿Cuántas rutinas son demasiadas?

Necesito acelerar una búsqueda sobre alguna colección con millones de elementos. El predicado de búsqueda debe pasarse como argumento.

Me he estado preguntando si la solución más simple (al menos por ahora) no sería simplemente usar rutinas para la tarea.

La pregunta a la que me enfrento en este momento es cuántas corrutinas puedo crear a la vez. :D Como nota al margen, puede haber más de una búsqueda de este tipo ejecutándose al mismo tiempo.

¿Puedo hacer millones de rutinas (una para cada artículo) para cada búsqueda? ¿Debo decidir sobre alguna carga de trabajo por rutina (por ejemplo, 1000 elementos por rutina)? ¿Debería también decidir sobre algún límite para la cantidad de rutinas?

Tengo un conocimiento aproximado de las corrutinas y cómo funcionan realmente, sin embargo, no tengo idea de cuáles son las limitaciones de rendimiento de esta función.

¡Gracias!

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

El peso de la memoria de una corrutina se escala con la profundidad del seguimiento de la llamada desde el bloque constructor de la corrutina hasta el punto de suspensión. Cada llamada suspend fun agrega otro objeto de Continuation a una lista vinculada y esto se retiene mientras la rutina está suspendida. Una cifra aproximada para una instancia de Continuation es de 100 bytes.

Entonces, si tiene una profundidad de seguimiento de llamadas de, digamos, 5, eso equivale a 500 bytes por elemento. Un millón de artículos son 500 MB.

Sin embargo, a menos que su código de búsqueda implique operaciones de bloqueo que dejarían un subproceso inactivo, no obtendrá nada de las corrutinas. Su tarea se parece más a una instancia de paralelismo de datos y puede resolverla de manera muy eficiente utilizando la API java.util.stream (como lo señaló el usuario marstran en el comentario).

over 4 years ago · Santiago Trujillo Report

0

De acuerdo con la guía de inicio de rutinas de Kotlin , el ejemplo lanza 100 000 rutinas. Creo que lo que pretendes hacer es exactamente para lo que está diseñado kotlin coroutine.

over 4 years ago · Santiago Trujillo Report

0

Si no va a hacer muchas modificaciones en su colección, simplemente guárdela en un HashMap, de lo contrario, guárdela en un TreeMap. Entonces solo busque elementos allí. Creo que los métodos de búsqueda implementados allí están lo suficientemente optimizados para manejar un millón de elementos en un abrir y cerrar de ojos. No usaría coroutines en este caso.

Documentación (para Kotlin):

HashMap: https://developer.android.com/reference/kotlin/java/util/HashMap

TreeMap: https://developer.android.com/reference/kotlin/java/util/TreeMap

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!