我正在看Twitter的静态脚本,并注意到所有变量和函数只有1个字符长,为什么以及如何做到这一点?它与性能有关吗?如果是这样,他们为什么不给他们网站上的所有元素这些短名称,可能是2个字符而不是1个,以避免任何冲突.
例:
(function (A) {
A.fn.isScreenNameField = function () {
return this.each(function () {
var M = A(this);
var F = A("#signup_username_url");
var E = A("#screen_name_info");
var D = A("#avail_screenname_check_indicator");
var O;
var C;
var I;
var N = M.val();
var G = N;
var H = N != "";
var Q = /[a-zA-Z0-9_]/;
function K() {
if (H) {
F.html(M.val())
}
}
function L() {
M.trigger("show-info");
E.hide();
D.show()
}
function B() {
E.show();
D.hide()
}
function P() {
G …Run Code Online (Sandbox Code Playgroud) 将unsigned short转换为char*(即将25转换为'25')的高效,便携方式是什么.
我想避免使用诸如获取(std :: string)字符串之类的内容.在这种情况下,性能很重要,因为这种转换需要快速而且经常发生.
我正在研究诸如使用sprintf之类的东西,但我想探索任何和所有的想法.
函数GetKeyState()返回一个包含密钥状态的SHORT(高位中的上/下,并以低位切换).我如何获得这些价值观?
我在java中编写了一个.obj解析器来模拟iPhone上的3D对象.我想将数据导出为二进制文件,该文件必须尽可能小.我有很多适合无符号短的索引,但它们在java中表示为int.
我想在文件中写入数据之前使用ByteBuffer类进行转换.我想在将它们推入ByteBuffer之前我必须操作字节,但我不知道如何操作.
如果你能帮助我,请提前感谢你.
所以我使用python来调用共享C++库中的方法.我有一个问题是将numpy 2D数组转换为C++ 2D short函数作为函数输入.我有一个创建了一个展示问题的玩具示例.随意编译并试用!
这是python代码(soexample.py):
# Python imports
from ctypes import CDLL
import numpy as np
# Open shared CPP library:
cpplib=CDLL('./libsoexample.so')
cppobj = cpplib.CPPClass_py()
# Stuck on converting to short**?
array = np.array([[1,2,3],[1,2,3]])
cpplib.func_py(cppobj,array)
Run Code Online (Sandbox Code Playgroud)
这是C++库(soexample.cpp):
#include <iostream>
using namespace std;
class CPPClass
{
public:
CPPClass(){}
void func(unsigned short **array)
{
cout << array[0][0] << endl;
}
};
// For use with python:
extern "C" {
CPPClass* CPPClass_py(){ return new CPPClass(); }
void func_py(CPPClass* myClass, unsigned short **array)
{
myClass->func(array); …Run Code Online (Sandbox Code Playgroud) 为什么 :
short a=0;
Console.Write(Marshal.SizeOf(a));
Run Code Online (Sandbox Code Playgroud)
节目 2
但如果我看到IL代码,我看到:
/*1*/ IL_0000: ldc.i4.0
/*2*/ IL_0001: stloc.0
/*3*/ IL_0002: ldloc.0
/*4*/ IL_0003: box System.Int16
/*5*/ IL_0008: call System.Runtime.InteropServices.Marshal.SizeOf
/*6*/ IL_000D: call System.Console.Write
Run Code Online (Sandbox Code Playgroud)
第1行的LDC表明:
将0作为int32推入堆栈.
所以必须4占用字节数.
但sizeOf显示2字节...
我在这里错过了什么?短片实际上占用了多少字节?
我听说有一个填充到4个字节的情况,所以处理起来会更快.是这样的吗?
(请忽略syncRoot和GC根标志字节,我只是询问2对4)
我在fedora 19 64bits下使用gcc 4.8.3
unsigned u1=10, u2=42;
unsigned short us1=10, us2=42;
int main() {
cout << "u1-u2="<<u1-u2<<", us1-us2="<<us1-us2<<endl;
}
Run Code Online (Sandbox Code Playgroud)
结果:u1-u2 = 4294967264,us1-us2 = -32
<<运算符似乎将第二个操作的结果解释为带符号的 short,而它将第一个操作的结果解释为unsigned int
版本:Visual Studio Professional 2013 Update 4
构建参数:首选32位为真
我不明白以下C#代码中的错误:
short iCount = 20;
short iValue = iCount + (short)1;
Run Code Online (Sandbox Code Playgroud)
将short添加到转换为short的int会导致以下错误:
无法将类型'int'隐式转换为'short'.存在显式转换(您是否错过了演员?)
上面的错误,在下面的例子中也可以看到,在这里完全有效:
short iCount = 20;
short iValue = iCount + 1;
Run Code Online (Sandbox Code Playgroud)
以下解决方法将删除错误:
short iCount = 20;
short iValue = (short)(iCount + 1);
Run Code Online (Sandbox Code Playgroud)
因此,"short + Int32 constant"形式的加法显然有效,结果是Int32,需要将其缩短.
有没有解释为什么第一个代码示例失败或者这是编译器错误?(在4次更新后我几乎无法相信)
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNextLine()) {
BigInteger number = new BigInteger(input.nextLine());
int bitLength = number.bitlength();
if (bitLength <= Bytes.SIZE)
System.out.println("\u8211 byte");
if (bitLength <= Short.SIZE)
System.out.println("\u8211 short");
if (bitLength <= Int.SIZE)
System.out.println("\u8211 int");
if (bitLength <= Long.SIZE)
System.out.println("\u8211 long");
if (bitLength > Long.SIZE)
System.out.println(number + " can't be fitted anywhere.");
}
}
Run Code Online (Sandbox Code Playgroud)
任务:找到合适的数据类型示例输入:5
-150
150000
1500000000
213333333333333333333333333333333333
-100000000000000
Run Code Online (Sandbox Code Playgroud)
样本输出:
-150 can be fitted in:
short
int
long
150000 can be fitted in: …Run Code Online (Sandbox Code Playgroud) 我正在编写一个性能非常关键的应用程序.对于x64 CPU最有效的数据类型,我有点困惑.
MDSN表示"在某些情况下,公共语言运行库可以将Short变量紧密组合在一起并节省内存消耗." 而且"整数数据类型在32位处理器上提供最佳性能"
我正在使用大量数据(在锯齿状数组中平均大约500万个值[10或更多] [30] [128,128])来实时生成位图(数据值的热图).所有数据点都是200到3500之间的整数,所以我可以使用short或integer.哪个效率最高?
谢谢.