Análisis del desempeño de C versus C++ en la producción multihilo de cadenas L-System: un caso de estudio ABP
DOI:
https://doi.org/10.30973/progmat/2024.16.2/6Palabras clave:
ABP, Lenguajes de programación, L-Systems, Procesamiento multihiloResumen
La programación orientada a objetos en C++ facilita la codificación de algoritmos respecto al paradigma estructurado del lenguaje C, este echo suele provocar un cuestionamiento válido entre los estudiantes ¿por qué codificar cadenas con memoria dinámica en C cuando los objetos String en C++ evitan ese trabajo? Este tipo de inquietudes permiten gestar casos de estudio de Aprendizaje Basado en Problemas (ABP). En el presente artículo se reporta el contraste de los lenguajes C y C++ a través de la generación multihilo de cadenas L-System usando computadoras personales a disposición de estudiantes de ingeniería en computación. Se realizaron cien corridas para el cálculo de tiempos promedio de ejecución para dos tipos de L-System considerando el procesamiento con balanceo y sin balanceo de carga para dos, cuatro y ocho hilos. Los resultados muestran una mayor velocidad de ejecución para el lenguaje C, pero diferencias interesantes en el Speed Up respecto al lenguaje C++. Al final se concluye que la mejor eficiencia se logra paralelizando con multihilos, siempre y cuando el volumen de los datos sea considerable y esté balanceado, además, la cantidad de hilos no debe rebasar el número de núcleos. Bien vale la pena que los estudiantes lleguen a estas conclusiones mediante el aprendizaje por descubrimiento a través de un caso de estudio.
Citas
Shoaib, M., Sumail, M., Sanjrani, A. A., Ahmed, A. A. Comparative Study of Contemporary Programming Languages in Implementation of Classical Algorithms. Journal of Information & Communication Technology. 2021, 14(1), 23-32.
TIBOE. TIOBE Index for June 2023 [en línea]. [recuperado el 20 de junio de 2023] https://www.tiobe.com/tiobe-index
Prusinkiewicz, P., Lindenmayer, A. The Algoritmic Beauty of Plants. New York: Springer-Verlag, 1990.
Savery, J. R. Overview of Problem-based Learning: Definitions and Distinctions. Interdisciplinary Journal of Problem-Based Learning. 2006, 1(1), 9-20. doi: https://doi.org/10.7771/1541-5015.1002.
Diestra, S. N., Apolaya, J. P. Perfil de egreso en los estudiantes de ingeniería: aportes significativos de la metodología del Aprendizaje Basado en Problemas. SCIÉNDO. 2021, 24(1), 35-43. doi: http://dx.doi.org/10.17268/sciendo.2021.004
Henriques, L., Bernardino, J. Performance of Memory Deallocation in C++, C# and Java. In: 18.ª Conferência da Associação Portuguesa de Sistemas de Informação (CAPSI’2018). Santarém, Portugal, 2018, 1-18.
Bukie, P. T., Udeze, C. L., Obono, I. O., Edim, B. E. Comparative Analysis of Compiler Performances and Program Efficiency [en línea]. Recuperado el 6 de Junio de 2022 de https://www.preprints.org/manuscript/201909.0322/v1
Ogala, J. O., Ojie, D. V. Comparative analysis of C, C++, C# and Java programming languages. Global Scientific Journals. (2020), 8(5), 1899-1913.
Brandefelt, L., Heyman, H. A Comparison of Performance & Implementation Complexity of Multithreaded Applications in Rust, Java and C++, Thesis, KTH Royal Institute of Technology, Swedish, 2020.
Plauska, I., Liutkevičius, A., Janavičiūtė, A. Performance Evaluation of C/C++, MicroPython, Rust and TinyGo Programming Languages on ESP32 Microcontroller. Electronics MDPI. 2023, 12(1), 1-19. doi: https://doi.org/10.3390/electronics12010143
Restrepo, B. Aprendizaje basado en problemas (ABP): una innovación didáctica para la enseñanza universitaria. Educación y Educadores. 2005, 8, 9-19.
Arellano, J. J., Nieva, O., Algredo, I. Aprendizaje Basado en Proyectos Utilizando L-Systems en un Curso de Compiladores. Programación Matemática y Software. 2013, 5(1), 82-96.https://doi.org/10.30973/progmat/2013.5.1/7
Microsoft. Heap Functions [en línea]. Windows app development documentation [recuperado el 15 de junio de 2022] de: https://learn.microsoft.com/en-us/windows/win32/memory/heap-functions
Microsoft. Acquiring high-resolution time stamps [en línea]. Windows app development documentation [recuperado el 15 de junio de 2022] de: https://learn.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps
Microsoft. Creating Threads [en línea]. Windows app development documentation [recuperado el 15 de junio de 2022]: https://learn.microsoft.com/en-us/windows/win32/procthread/creating-threads
Publicado
Cómo citar
Número
Sección
Licencia
Derechos de autor 2024 J. Jesús Arellano Pimentel, Guadalupe Toledo Toledo, Mario Andrés Basilio López, José Ricardo Salvador Nolasco, Guillermo Eduardo Reyes Rodríguez, José Alejandro Pérez Sibaja, Samuel Erasto López Díaz
Esta obra está bajo una licencia internacional Creative Commons Atribución 4.0.
Usted es libre de:
Compartir — compartir y redistribuir el material publicado en cualquier medio o formato. |
Adaptar — combinar, transformar y construir sobre el material para cualquier propósito, incluso comercialmente. |
Bajo las siguientes condiciones:
Atribución — Debe otorgar el crédito correspondiente, proporcionar un enlace a la licencia e indicar si se realizaron cambios. Puede hacerlo de cualquier manera razonable, pero de ninguna manera que sugiera que el licenciador lo respalda a usted o a su uso. |
Sin restricciones adicionales: no puede aplicar términos legales o medidas tecnológicas que restrinjan legalmente a otros a hacer cualquier cosa que permita la licencia. |