我的功能将被召唤数千次.如果我想让它更快,将局部函数变量更改为静态是否有用?我背后的逻辑是,因为静态变量在函数调用之间是持久的,所以它们仅在第一次分配时,因此,每个后续调用都不会为它们分配内存并且会变得更快,因为内存分配步骤没有完成.
此外,如果上述情况属实,那么使用全局变量而不是参数会更快地在每次调用时将信息传递给函数吗?我认为参数的空间也分配在每个函数调用上,以允许递归(这就是递归占用更多内存的原因),但由于我的函数不是递归的,如果我的推理是正确的,那么理论上取下参数它更快.
我知道我想要做的这些事情是可怕的编程习惯,但请告诉我它是否明智.无论如何我会试一试,但请告诉我你的意见.
c memory-management global-variables local-variables static-variables
标记变量是否有用static,当它位于.cpp文件的全局范围内时,不在函数中?
你也可以将static关键字用于函数吗?如果是的话,它们的用途是什么?
我知道Web应用程序中使用的静态变量是为Web应用程序中的所有用户共享的.如果我有一个使用某个静态私有变量的库(DLL),那么使用该库的所有应用程序是否共享该变量的值?
例如,假设我的DLL中有以下代码:
private static bool isConnected = false;
public static void Connect()
{
// TODO: Connect.
isConnected = true;
}
public static void Disconnect()
{
// TODO: Disconnect.
isConnected = false;
}
Run Code Online (Sandbox Code Playgroud)
然后,在应用程序A,我把myDLL.Connect()它设置的值isConnected来True.然后我有一些应用程序B执行相同的操作.如果应用程序稍后调用myDLL.Disconnect(),并应用B见isConnected为False,因为这两个应用程序共享同一个静态变量相同的DLL文件?在这种情况下,DLL文件在同一文件路径中实际上是相同的文件.
我正在读一本关于Objective-C的书,作者说如果局部变量没有赋值,它们将被设置为nil,但静态变量将被设置为零.所以,我设置int a并没有给它赋值.然后NSLog(@"%i", a)显示它并a显示为零.我对此感到有些困惑,我想知道是否有人可以为我澄清一下?
静态变量和实例变量之间有什么区别.以下句子是我无法得到的:
在某些情况下,类的所有对象只应共享特定变量的一个副本 - 这里使用静态变量.
静态变量表示类范围信息.类的所有对象共享相同的数据.
我认为实例变量是使用类宽,而静态变量只在自己的方法中有范围?
我在R中有一个我多次调用的函数.我想跟踪我调用它的次数,并使用它来决定在函数内部做什么.这就是我现在所拥有的:
f = function( x ) {
count <<- count + 1
return( mean(x) )
}
count = 1
numbers = rnorm( n = 100, mean = 0, sd = 1 )
for ( x in seq(1,100) ) {
mean = f( numbers )
print( count )
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢我必须在函数范围之外声明变量count.在C或C++中,我可以创建一个静态变量.我可以用R编程语言做类似的事情吗?
好吧,我想我在这里有一个非常基本的疑问:
我正在开发一个关于GAE(Java)的应用程序,并对返回大量实体的数据存储区执行查询,因此我需要对其进行缓存.我使用的是memcache并且工作得很好,但是如果我将实体列表保存在静态变量中,整个请求的速度是使用memcache的两倍.我认为那是因为我不是一直在反序列化实体.
在memcache上使用静态变量会有什么缺点?我不知道我的应用程序在云中是否有多个实例,因此我的静态变量的几个实例?
我正在尝试缓存的实体列表是上周的最佳(更高分)帖子.我拿这个列表并选择5个随机帖子并在几页中显示它们.
谢谢您的帮助!
java google-app-engine memcached static-variables google-cloud-datastore
考虑以下:
$var = 'foo' . 'bar'; # Not a member of a class, free-standing or in a function.
Run Code Online (Sandbox Code Playgroud)
然而,只要我标记$var为static:
static $var = 'foo' . 'bar';
Run Code Online (Sandbox Code Playgroud)
PHP(WAMP设置上的5.3.1)抱怨以下错误:
解析错误:语法错误,意外'.',期待','或';'
似乎字符串连接是这里的罪魁祸首.
这里发生了什么?有人可以向我解释静态变量的规则吗?
是不是不必保留静态变量,因为它在程序的持续时间内保持不变,无论你是否释放它?
请参阅此代码:https: //github.com/magicalpanda/MagicalRecord/blob/master/Source/Categories/NSManagedObjectContext+MagicalRecord.m#L24-29
我想从静态方法访问静态变量:
#!/usr/bin/env python
class Messenger:
name = "world"
@staticmethod
def get_msg(grrrr):
return "hello " + grrrr.name
print Messenger.get_msg(Messenger)
Run Code Online (Sandbox Code Playgroud)
没有传递grrrr给方法怎么做?这是真正的OOP吗?
任何喜欢name或self.name似乎不起作用的东西:
NameError: global name 'name' is not defined
Run Code Online (Sandbox Code Playgroud)
和
NameError: global name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)