多线程制作 L 系统字符串时 C 与 C++ 的性能分析:ABP 案例研究

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.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信