我最近在面试时遇到的一个问题是:Writeadatastructurethatsupportstwooperations.1.Addinganumbertothestructure.2.Calculatingthemedian.Theoperationstoaddanumberandcalculatethemedianmusthaveaminimumtimecomplexity.我的实现非常简单,基本上保持元素排序,这样添加一个元素的成本是O(log(n))而不是O(1),但中位数是O(1)而不是O(n*log(n))我还添加了一个简单的实现,但包含numpy数组中的元素:import
我刚刚尝试用Python3.3运行这个脚本。不幸的是,它的速度大约是Python2.7的两倍。#!/usr/bin/envpythonfromsysimportstdindefmain():forlineinstdin:try:fields=line.split('"',6)print(fields[5])except:passif__name__=='__main__':main()结果如下:$timezcataccess.log.gz|python3-mcProfile./ua.py>/dev/nullreal0m13.276suser0m18.977ssys0m0.484s$ti
我刚刚尝试用Python3.3运行这个脚本。不幸的是,它的速度大约是Python2.7的两倍。#!/usr/bin/envpythonfromsysimportstdindefmain():forlineinstdin:try:fields=line.split('"',6)print(fields[5])except:passif__name__=='__main__':main()结果如下:$timezcataccess.log.gz|python3-mcProfile./ua.py>/dev/nullreal0m13.276suser0m18.977ssys0m0.484s$ti
(已由sharth的评论回答。)我用python编写了一个二进制搜索算法,它或多或少遵循与bisect模块中的bisect_left函数相同的结构。事实上,它有几个较少的条件,因为我知道高点将是列表的长度,低点将为0。但由于某种原因,内置函数的运行速度是我的5倍。我的代码如下:defbisection_search(word,t):high=len(t)low=0whilelow内置函数的源代码是:defbisect_left(a,x,lo=0,hi=None):iflo如您所见,几乎完全相同。然而,我的函数(在100,000个单词的有序列表中搜索最后一个词)的超时是-3.600120
(已由sharth的评论回答。)我用python编写了一个二进制搜索算法,它或多或少遵循与bisect模块中的bisect_left函数相同的结构。事实上,它有几个较少的条件,因为我知道高点将是列表的长度,低点将为0。但由于某种原因,内置函数的运行速度是我的5倍。我的代码如下:defbisection_search(word,t):high=len(t)low=0whilelow内置函数的源代码是:defbisect_left(a,x,lo=0,hi=None):iflo如您所见,几乎完全相同。然而,我的函数(在100,000个单词的有序列表中搜索最后一个词)的超时是-3.600120
在Python中,为类的实例创建的字典与包含该类的相同属性的字典相比很小:importsysclassFoo(object):def__init__(self,a,b):self.a=aself.b=bf=Foo(20,30)使用Python3.5.2时,以下对getsizeof的调用产生:>>>sys.getsizeof(vars(f))#varsgetsobj.__dict__96>>>sys.getsizeof(dict(vars(f))288288-96=192字节保存!另一方面,使用Python2.7.12时,相同的调用返回:>>>sys.getsizeof(vars(f))
在Python中,为类的实例创建的字典与包含该类的相同属性的字典相比很小:importsysclassFoo(object):def__init__(self,a,b):self.a=aself.b=bf=Foo(20,30)使用Python3.5.2时,以下对getsizeof的调用产生:>>>sys.getsizeof(vars(f))#varsgetsobj.__dict__96>>>sys.getsizeof(dict(vars(f))288288-96=192字节保存!另一方面,使用Python2.7.12时,相同的调用返回:>>>sys.getsizeof(vars(f))
正如您在下面看到的,Gecko和Blink对不同的内联block元素执行不一致的高度计算,即使它们都具有相同的css类。似乎(*pause*)Trident是唯一正确的布局引擎。我是否忘记(重新)设置属性?此外,正如您在此fiddle中看到的那样,如果我将填充从.3em更改为1emBlink会按预期呈现。所有元素都具有相同的高度。不过,Gecko仍然“坏了”。有谁知道为什么会发生这种情况以及如何解决它?Gecko(火狐39.0版)Blink(谷歌浏览器v.43.0.2357.132m):Trident(InternetExplorerv.11.0.9600.17843):body{fo
正如您在下面看到的,Gecko和Blink对不同的内联block元素执行不一致的高度计算,即使它们都具有相同的css类。似乎(*pause*)Trident是唯一正确的布局引擎。我是否忘记(重新)设置属性?此外,正如您在此fiddle中看到的那样,如果我将填充从.3em更改为1emBlink会按预期呈现。所有元素都具有相同的高度。不过,Gecko仍然“坏了”。有谁知道为什么会发生这种情况以及如何解决它?Gecko(火狐39.0版)Blink(谷歌浏览器v.43.0.2357.132m):Trident(InternetExplorerv.11.0.9600.17843):body{fo
Chrome、Firefox和Safari(WebKit)等现代网络浏览器的代码库非常庞大。我很好奇是什么让他们的实现如此重要以至于需要大量代码。作为一个推论,如果一个假设的浏览器只支持严格的HTML5和JavaScript,为了避免兼容性问题,代码库会不会显着变小? 最佳答案 对于你的第一个问题,考虑现代浏览器需要实现的东西(一些浏览器将其中的一些工作推给了操作系统服务):多个解析器:至少是XML、HTML、JavaScript、CSS。至少四个独立的布局系统(CSS盒模型、flexbox、SVG、MathML)。至少一个图形库;