ChatGPT优化Python代码的小技巧

news/2024/10/22 15:28:21/

使用 chatGPT 优化代码并降低运行时的云成本
许多开发人员说“过早的优化是万恶之源”。

这句话的来源归功于Donald Knuth。在他的书《计算机编程的艺术》中,他写道:

“真正的问题是,程序员在错误的时间和错误的地方花费了太多时间来担心效率;过早的优化是编程中万恶之源。”

这句话起源于软件开发的早期阶段,当时为了优化目的而重写代码会消耗开发人员的大量时间,但预计只会产生非常有限(如果有的话)的成本节省。

在当今时代,随着生成的 AI 产品变得越来越容易获得,重写代码成为一项可以非常轻松地完成的任务,借助诸如 chatGPT 之类的工具。

在这个简单的示例中,我将演示如何在不到一分钟的时间内优化一个小的 python 脚本,开发人员方面的工作量最少,同时创造显着减少运行时间的潜力,从而以以下形式产生更具影响力的效果降低云运营成本。

我采用了一个简单的脚本来读取 HTTP 访问日志文件,作为脚本的参数,然后打印日志中每个 HTTP 响应状态代码的出现次数。

我从一个非常简单的 chatGPT 提问开始:
在这里插入图片描述
这是 chatGPT 生成的脚本:

import sys
from collections import defaultdictdef count_status_codes(log_file):status_counts = defaultdict(int)with open(log_file, 'r') as f:for line in f:# Extract the HTTP response status code from each linestatus_code = line.split()[-2]status_counts[status_code] += 1return status_countsif __name__ == '__main__':if len(sys.argv) != 2:print('Usage: python script.py log_file')sys.exit(1)log_file = sys.argv[1]status_counts = count_status_codes(log_file)for status_code, count in status_counts.items():print(f'{status_code}: {count}')

运行原始脚本和 chatGPT 生成的脚本后,我注意到一个小差异——我没有要求输出以 JSON 格式生成,所以 chatGPT 只生成了一个简单的文本输出:
在这里插入图片描述
没过多久,chatGPT 就更新了脚本以创建 JSON 格式的输出。我问了以下问题:
在这里插入图片描述
在 chatGPT 更新后,脚本如下所示:

import sys
import json
from collections import defaultdictdef count_status_codes(log_file):status_counts = defaultdict(int)with open(log_file, 'r') as f:for line in f:# Extract the HTTP response status code from each linestatus_code = line.split()[-2]status_counts[status_code] += 1return status_countsif __name__ == '__main__':if len(sys.argv) != 2:print('Usage: python script.py log_file')sys.exit(1)log_file = sys.argv[1]status_counts = count_status_codes(log_file)print(json.dumps(dict(status_counts), indent=4))

这次更新后,两个脚本的输出看起来是一样的:
在这里插入图片描述
现在是时候向两个脚本添加一些测量并再次运行它们了。我使用时间模块来测量脚本的运行时间,添加以下代码:

import time
## All other imports and function definitions here
start_time = time.time()
main()
print("--- %s seconds ---" % (time.time() - start_time))

差异惊人:
在这里插入图片描述
我们在这里看到的是一个脚本,其功能与原始脚本完全相同,但从运行时的角度来看,性能提高了近 100 倍!

显然,这个例子并没有涵盖所有可能的边缘情况。例如,如果每个日志条目中的值以非常规顺序写入日志,则此处由 chatGPT 生成的代码不支持所需的功能,而原始脚本确实解决了这种情况。必须在生成的 AI 创建代码后对其进行审查,并确保原始功能没有受到任何损害。

如本例所示,其含义是压倒性的。我可以想象各种类似的函数和代码片段在生产系统中作为 AWS Lambda 函数(或类似资源)运行,每天在大规模操作中被触发数百万次。

总而言之,我相信像 chatGPT 这样的生成式人工智能工具可以帮助我们减轻对过早优化代码的恐惧,并在大规模生产系统中节省大量时间和云运营成本。


http://www.ppmy.cn/news/957770.html

相关文章

Git使用规范Git常用命令

Git使用规范&&Git常用命令 分支规范 master分支 master的分支HEAD和历史commit均是是稳定、可发布的状态。master分支的每个commit都需要打tag,如v1.0、v1.1、v1.2、v2.0等。仅能从test分支和hotfix分支合并过来。 hotfix的合并必须是通过代码审核和测试…

ChatGPT画玫瑰花 | prompt

很明显,失败了!!!!!救命啊啊啊啊啊啊啊啊啊啊啊 和chatgpt-3.5完整的对话过程如下:http://t.csdn.cn/AeEae

ChatGPT 投喂指南

我想要让 ChatGPT 做这些事: 给它一份 PDF,让它分析摘要、提炼内容; 让它去看某个网页,帮我查询最新的信息; 给它一份数据表格,让它分析出数据的变化; 给它一份文本,让它总结、模…

ChatGPT秒杀了所有408考研编程题……

编辑 | FightingCV 点击下方卡片,关注“自动驾驶之心”公众号 ADAS巨卷干货,即可获取 本文均由ChatGPT生成 那么,ChatGPT可以解决408中的编程题吗? 直接结论:由ChatGPT给出的408代码90%可以拿满分 2023年408的编程题 …

chatgpt开发内核定时器模块的完整过程

描述任务需求后,几乎在同一时刻chatgpt给出响应,开始进入代码刷屏模式,coding过程中还不忘给代码添加注释。 要求它顺便将Makefile文件写好提供给我,刷完代码后,进跟着开始刷Makefie文件: 编译生成的代码时…

ChatGPT实现leetcode 刷题和变型

leetcode 刷题和变型 作为一个程序员,Leetcode 是一个非常重要的网站。它不仅可以帮助程序员提高算法和数据结构的能力,还能帮助我们准备技术面试。但是,刷 Leetcode 也需要花费大量的时间和精力来解决各种难题。那么,有没有什么…

leetcode:704. 二分查找(python3解法)

难度:简单 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9…

Idea的神级辅助插件-Bito-ChatGPT

最近被一款Idea的辅助神器协助Coding,让我都开始害怕我的程序员的活会不会就这样被替代了。现在给大家介绍这款神器Bito-ChatGPT,它能让开发人员轻松编写代码、理解语法、编写测试用例、解释代码、注释代码、检查安全性,甚至解释高级概念。 1…