J. A. 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
{"title":"多线程制作 L 系统字符串时 C 与 C++ 的性能分析:ABP 案例研究","authors":"J. A. 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","doi":"10.30973/progmat/2024.16.2/6","DOIUrl":null,"url":null,"abstract":"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.","PeriodicalId":417893,"journal":{"name":"Programación Matemática y Software","volume":"32 20","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Análisis del desempeño de C versus C++ en la producción multihilo de cadenas L-System: un caso de estudio ABP\",\"authors\":\"J. A. 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\",\"doi\":\"10.30973/progmat/2024.16.2/6\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"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.\",\"PeriodicalId\":417893,\"journal\":{\"name\":\"Programación Matemática y Software\",\"volume\":\"32 20\",\"pages\":\"\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-06-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Programación Matemática y Software\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.30973/progmat/2024.16.2/6\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Programación Matemática y Software","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.30973/progmat/2024.16.2/6","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
摘要
与 C 语言的结构化范式相比,C++ 中的面向对象编程为算法编码提供了便利,这一事实常常在学生中引发一个合理的问题:既然 C++ 中的字符串对象可以避免这一工作,为什么还要在 C 语言中使用动态内存来编码字符串呢?这些问题有助于开展基于问题的学习(PBL)案例研究。本文通过使用计算机工程专业学生的个人计算机,以多线程方式生成 L 系统字符串,报告了 C 语言和 C++ 语言之间的对比。通过 100 次运行,计算了两类 L 系统的平均执行时间,并考虑了两线程、四线程和八线程的负载平衡和非负载平衡处理。结果表明,C 语言的执行速度更高,但与 C++ 语言相比,"加速度 "存在有趣的差异。最后得出的结论是,只要数据量相当大且平衡,线程数不应超过内核数,那么使用多线程并行处理就能达到最佳效率。通过案例研究的发现式学习得出这些结论非常值得学生借鉴。
Análisis del desempeño de C versus C++ en la producción multihilo de cadenas L-System: un caso de estudio ABP
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.