Common Lisp程序中的哪些操作被认为是足够原始的,以便计算算法分析中的单个"步骤"?现代lisps的实施有多广泛?
当然,使用小整数的算术只算作一个步骤,但更大的数字呢?而关于考虑之间有什么区别reverse和nreverse?具体来说,是nreverseθ reverse?那么所有的数组和序列操作呢?另外,宏如何计算 - 在分析复杂性时我应该如何考虑宏?
所以,假设我正在编写一个Web服务器,我想支持"非常大"的文件上传.让我们进一步假设我的意思是通过标准的multipart/form-data MIME类型来实现这一点.我应该说我正在使用erlang并且我计划在返回时收集http数据包erlang:decode_packet/2,但我不想实际收集请求正文,直到http请求处理程序找到了上传内容的位置.我是不是该
a)反过来收集身体,忽略了它非常大的可能性,因此可能因内存不足而导致服务器崩溃?
b)在标题处理完之后,不要在套接字上接收任何(可能不存在的)请求体?
c)做点什么?
答案c的示例可能是:产生另一个进程来收集并将上载的内容写入临时位置(以便最小化内存使用),同时将该位置提供给http请求处理程序以供将来处理.但我只是不知道 - 这里有标准技术吗?