Git Product home page Git Product logo

Comments (17)

emoon avatar emoon commented on July 25, 2024
Running Time    Self (ms)       Symbol Name
132940.0ms  100.0%  0,0     sys::thread::Thread::new::thread_start::hbf136943ebd5e19atrx  0x51338f
132940.0ms  100.0%  0,0      thread_start
132940.0ms  100.0%  0,0       _pthread_start
132940.0ms  100.0%  0,0        _pthread_body
132940.0ms  100.0%  0,0         sys::thread::Thread::new::thread_start::hbf136943ebd5e19atrx
132940.0ms  100.0%  0,0          boxed::F.FnBox$LT$A$GT$::call_box::h7091453914271055279
132940.0ms  100.0%  0,0           __rust_try
132940.0ms  100.0%  0,0            sys_common::unwind::try::try_fn::h2280576906611178685
132940.0ms  100.0%  0,0             run_compiler::hfc54a24d535031affGc
132940.0ms  100.0%  0,0              driver::compile_input::h96d25d813e274323Aca
132940.0ms  100.0%  0,0               driver::phase_5_run_llvm_passes::hfb96756462af2facD1a
132940.0ms  100.0%  0,0                back::write::run_passes::h5fe8446342a856fajvd
132940.0ms  100.0%  0,0                 back::write::execute_work_item::ha79c597bd353f7catJd
132940.0ms  100.0%  0,0                  LLVMRunPassManager
132940.0ms  100.0%  0,0                   llvm::legacy::PassManager::run(llvm::Module&)
132940.0ms  100.0%  0,0                    llvm::legacy::PassManagerImpl::run(llvm::Module&)
132940.0ms  100.0%  0,0                     (anonymous namespace)::CGPassManager::runOnModule(llvm::Module&)
132940.0ms  100.0%  0,0                      (anonymous namespace)::SimpleInliner::runOnSCC(llvm::CallGraphSCC&)
132933.0ms   99.9%  24,0                          llvm::Inliner::runOnSCC(llvm::CallGraphSCC&)
129874.0ms   97.6%  14,0                           llvm::Inliner::shouldInline(llvm::CallSite)
129836.0ms   97.6%  4,0                         (anonymous namespace)::SimpleInliner::getInlineCost(llvm::CallSite)
129770.0ms   97.6%  2,0                          llvm::getInlineCost(llvm::CallSite, int, llvm::TargetTransformInfo&, llvm::AssumptionCacheTracker*)
129765.0ms   97.6%  8,0                           llvm::getInlineCost(llvm::CallSite, llvm::Function*, int, llvm::TargetTransformInfo&, llvm::AssumptionCacheTracker*)
129685.0ms   97.5%  622,0                              (anonymous namespace)::CallAnalyzer::analyzeCall(llvm::CallSite)
124439.0ms   93.6%  9,0                             llvm::CodeMetrics::collectEphemeralValues(llvm::Function const*, llvm::AssumptionCache*, llvm::SmallPtrSetImpl<llvm::Value const*>&)
124409.0ms   93.5%  124409,0                                 llvm::AssumptionCache::scanFunction()
16.0ms    0.0%  3,0                              completeEphemeralValues(llvm::SmallVector<llvm::Value const*, 16u>&, llvm::SmallPtrSetImpl<llvm::Value const*>&)
5.0ms    0.0%   0,0                              <Unknown Address>
3.0ms    0.0%   3,0                               _platform_memset$VARIANT$Ivybridge
2.0ms    0.0%   2,0                               llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase()
2473.0ms    1.8%    1124,0                              llvm::InstVisitor<(anonymous namespace)::CallAnalyzer, bool>::visit(llvm::Instruction&)
787.0ms    0.5% 9,0                              llvm::InstVisitor<(anonymous namespace)::CallAnalyzer, bool>::delegateCallInst(llvm::CallInst&)
153.0ms    0.1% 153,0                                llvm::SwitchInst::getSuccessor(unsigned int) const
107.0ms    0.0% 4,0                              (anonymous namespace)::CallAnalyzer::visitCallSite(llvm::CallSite)
75.0ms    0.0%  8,0                              (anonymous namespace)::CallAnalyzer::visitBinaryOperator(llvm::BinaryOperator&)
67.0ms    0.0%  67,0                                 llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >, llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >::lookup(llvm::Value* const&) const
32.0ms    0.0%  32,0                                 (anonymous namespace)::CallAnalyzer::lookupSROAArgAndCost(llvm::Value*, llvm::Value*&, llvm::DenseMapIterator<llvm::Value*, int, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, int>, false>&)
30.0ms    0.0%  9,0                              llvm::DataLayout::getTypeSizeInBits(llvm::Type*) const
25.0ms    0.0%  25,0                                 llvm::SmallPtrSetImplBase::insert_imp(void const*)
20.0ms    0.0%  2,0                              llvm::TargetTransformInfo::getUserCost(llvm::User const*) const
9.0ms    0.0%   0,0                              (anonymous namespace)::CallAnalyzer::visitCastInst(llvm::CastInst&)
9.0ms    0.0%   7,0                              (anonymous namespace)::CallAnalyzer::visitCmpInst(llvm::CmpInst&)
8.0ms    0.0%   8,0                              llvm::GetElementPtrInst::isInBounds() const
7.0ms    0.0%   3,0                              (anonymous namespace)::CallAnalyzer::accumulateGEPOffset(llvm::GEPOperator&, llvm::APInt&)
6.0ms    0.0%   0,0                              <Unknown Address>
3.0ms    0.0%   3,0                               llvm::SimplifyBinOp(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const&, llvm::TargetLibraryInfo const*, llvm::DominatorTree const*, llvm::AssumptionCache*, llvm::Instruction const*)
3.0ms    0.0%   3,0                               llvm::DataLayout::getStructLayout(llvm::StructType*) const
5.0ms    0.0%   2,0                              (anonymous namespace)::CallAnalyzer::visitUnaryInstruction(llvm::UnaryInstruction&)
4.0ms    0.0%   4,0                              llvm::DataLayout::getAlignment(llvm::Type*, bool) const
3.0ms    0.0%   3,0                              llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase()
1.0ms    0.0%   1,0                              llvm::Type::getPrimitiveSizeInBits() const
1.0ms    0.0%   1,0                              llvm::AllocaInst::isStaticAlloca() const
1621.0ms    1.2%    1494,0                              llvm::DbgInfoIntrinsic::classof(llvm::Value const*)
253.0ms    0.1% 122,0                               llvm::SmallPtrSetImplBase::insert_imp(void const*)
68.0ms    0.0%  0,0                             llvm::SmallVectorBase::grow_pod(void*, unsigned long, unsigned long)
38.0ms    0.0%  38,0                                llvm::InvokeInst::getSuccessor(unsigned int) const
32.0ms    0.0%  0,0                             <Unknown Address>
6.0ms    0.0%   6,0                              llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >, llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >::lookup(llvm::Value* const&) const
4.0ms    0.0%   4,0                              llvm::AllocaInst::isArrayAllocation() const
3.0ms    0.0%   3,0                              (anonymous namespace)::CallAnalyzer::lookupSROAArgAndCost(llvm::Value*, llvm::Value*&, llvm::DenseMapIterator<llvm::Value*, int, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, int>, false>&)
2.0ms    0.0%   2,0                              llvm::DataLayout::getTypeSizeInBits(llvm::Type*) const
2.0ms    0.0%   2,0                              llvm::APInt::operator+=(llvm::APInt const&)
2.0ms    0.0%   2,0                              completeEphemeralValues(llvm::SmallVector<llvm::Value const*, 16u>&, llvm::SmallPtrSetImpl<llvm::Value const*>&)
2.0ms    0.0%   2,0                              llvm::GetElementPtrInst::isInBounds() const
2.0ms    0.0%   2,0                              llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*> >, llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*> >::InsertIntoBucketImpl(llvm::Value* const&, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>*)
2.0ms    0.0%   2,0                              llvm::Module::getDataLayout() const
2.0ms    0.0%   2,0                              llvm::APInt::operator*(llvm::APInt const&) const
1.0ms    0.0%   1,0                              llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase()
1.0ms    0.0%   1,0                              llvm::APInt::sextOrTrunc(unsigned int) const
1.0ms    0.0%   1,0                              llvm::DataLayout::getABITypeAlignment(llvm::Type*) const
1.0ms    0.0%   1,0                              llvm::Value::getName() const
1.0ms    0.0%   1,0                              llvm::AssumptionCache::scanFunction()
23.0ms    0.0%  23,0                                llvm::BasicBlock::getTerminator()
18.0ms    0.0%  2,0                             (anonymous namespace)::CallAnalyzer::accumulateGEPOffset(llvm::GEPOperator&, llvm::APInt&)
15.0ms    0.0%  15,0                                llvm::BranchInst::getSuccessorV(unsigned int) const
12.0ms    0.0%  12,0                                llvm::SwitchInst::getSuccessor(unsigned int) const
11.0ms    0.0%  0,0                             llvm::ConstantInt::get(llvm::Type*, llvm::APInt const&)
10.0ms    0.0%  1,0                             llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >, llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >::FindAndConstruct(llvm::Value*&&)
9.0ms    0.0%   9,0                             llvm::BranchInst::getNumSuccessorsV() const
8.0ms    0.0%   8,0                             llvm::SwitchInst::getNumSuccessorsV() const
6.0ms    0.0%   6,0                             llvm::SwitchInst::getSuccessorV(unsigned int) const
3.0ms    0.0%   3,0                             llvm::InvokeInst::getNumSuccessorsV() const
3.0ms    0.0%   3,0                             llvm::ResumeInst::getNumSuccessorsV() const
2.0ms    0.0%   2,0                             llvm::InvokeInst::getSuccessorV(unsigned int) const
2.0ms    0.0%   0,0                             llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*> >, llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*> >::operator[](llvm::Value*&&)
2.0ms    0.0%   2,0                             llvm::UnreachableInst::getNumSuccessorsV() const
2.0ms    0.0%   0,0                             free
2.0ms    0.0%   2,0                             llvm::sys::AtomicIncrement(unsigned int volatile*)
2.0ms    0.0%   0,0                             llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::paramHasAttr(unsigned int, llvm::Attribute::AttrKind) const
1.0ms    0.0%   1,0                             llvm::Value::assertModuleIsMaterialized() const
1.0ms    0.0%   1,0                             llvm::IntegerType::get(llvm::LLVMContext&, unsigned int)
1.0ms    0.0%   1,0                             llvm::ReturnInst::getNumSuccessorsV() const
1.0ms    0.0%   1,0                             _platform_memset$VARIANT$Ivybridge
1.0ms    0.0%   1,0                             llvm::DataLayout::getIntPtrType(llvm::LLVMContext&, unsigned int) const
1.0ms    0.0%   1,0                             llvm::AssumptionCacheTracker::getAssumptionCache(llvm::Function&)
1.0ms    0.0%   0,0                             llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, int, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, int> >, llvm::Value*, int, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, int> >::InsertIntoBucketImpl(llvm::Value* const&, llvm::detail::DenseMapPair<llvm::Value*, int>*)
1.0ms    0.0%   1,0                             DYLD-STUB$$memcmp
1.0ms    0.0%   0,0                             je_free
30.0ms    0.0%  0,0                            <Unknown Address>
8.0ms    0.0%   8,0                             llvm::DbgInfoIntrinsic::classof(llvm::Value const*)
4.0ms    0.0%   4,0                             llvm::SmallPtrSetImplBase::insert_imp(void const*)
3.0ms    0.0%   3,0                             llvm::InvokeInst::getNumSuccessorsV() const
3.0ms    0.0%   3,0                             llvm::InvokeInst::getSuccessor(unsigned int) const
2.0ms    0.0%   2,0                             llvm::TargetTransformInfo::Model<llvm::X86TTIImpl>::areInlineCompatible(llvm::Function const*, llvm::Function const*) const
2.0ms    0.0%   2,0                             llvm::BasicBlock::getTerminator()
2.0ms    0.0%   2,0                             llvm::DenseMapBase<llvm::DenseMap<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >, llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt>, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::Value*, std::__1::pair<llvm::Value*, llvm::APInt> > >::FindAndConstruct(llvm::Value*&&)
1.0ms    0.0%   1,0                             llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::arg_end() const
1.0ms    0.0%   1,0                             llvm::SwitchInst::getSuccessorV(unsigned int) const
1.0ms    0.0%   1,0                             je_free
1.0ms    0.0%   1,0                             llvm::BranchInst::getSuccessorV(unsigned int) const
1.0ms    0.0%   1,0                             llvm::SwitchInst::getSuccessor(unsigned int) const
1.0ms    0.0%   1,0                             llvm::InvokeInst::getSuccessorV(unsigned int) const
17.0ms    0.0%  1,0                            llvm::TargetTransformInfo::areInlineCompatible(llvm::Function const*, llvm::Function const*) const
7.0ms    0.0%   7,0                            llvm::AttributeFuncs::areInlineCompatible(llvm::Function const&, llvm::Function const&)
6.0ms    0.0%   4,0                            free
5.0ms    0.0%   0,0                            llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::hasFnAttr(llvm::Attribute::AttrKind) const
2.0ms    0.0%   2,0                            llvm::SwitchInst::getSuccessorV(unsigned int) const
2.0ms    0.0%   1,0                            llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::isNoInline() const
1.0ms    0.0%   1,0                            je_free
1.0ms    0.0%   1,0                            llvm::AttributeSet::hasAttribute(unsigned int, llvm::Attribute::AttrKind) const
1.0ms    0.0%   1,0                            operator delete(void*)
3.0ms    0.0%   0,0                           <Unknown Address>
1.0ms    0.0%   1,0                            (anonymous namespace)::CallAnalyzer::analyzeCall(llvm::CallSite)
1.0ms    0.0%   1,0                            operator delete(void*)
1.0ms    0.0%   1,0                            je_free
50.0ms    0.0%  3,0                          llvm::TargetTransformInfoWrapperPass::getTTI(llvm::Function const&)
11.0ms    0.0%  5,0                          llvm::Inliner::getInlineThreshold(llvm::CallSite) const
1.0ms    0.0%   0,0                          <Unknown Address>
1.0ms    0.0%   1,0                           llvm::Function::getEntryCount() const
17.0ms    0.0%  0,0                         llvm::emitOptimizationRemarkAnalysis(llvm::LLVMContext&, char const*, llvm::Function const&, llvm::DebugLoc const&, llvm::Twine const&)
3.0ms    0.0%   3,0                         llvm::sys::AtomicIncrement(unsigned int volatile*)
2.0ms    0.0%   2,0                         llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::getCallee() const
1.0ms    0.0%   0,0                         llvm::Value::getName() const
1.0ms    0.0%   0,0                         <Unknown Address>
1.0ms    0.0%   1,0                          llvm::getInlineCost(llvm::CallSite, int, llvm::TargetTransformInfo&, llvm::AssumptionCacheTracker*)
2757.0ms    2.0%    94,0                           llvm::InlineFunction(llvm::CallSite, llvm::InlineFunctionInfo&, llvm::AAResults*, bool)
1377.0ms    1.0%    1373,0                          llvm::CallGraphNode::removeCallEdgeFor(llvm::CallSite)
538.0ms    0.4% 0,0                         llvm::CloneAndPruneFunctionInto(llvm::Function*, llvm::Function const*, llvm::ValueMap<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, bool, llvm::SmallVectorImpl<llvm::ReturnInst*>&, char const*, llvm::ClonedCodeInfo*, llvm::Instruction*)
339.0ms    0.2% 23,0                            llvm::BasicBlock::splitBasicBlock(llvm::ilist_iterator<llvm::Instruction>, llvm::Twine const&)
99.0ms    0.0%  3,0                         llvm::ReplaceableMetadataImpl::replaceAllUsesWith(llvm::Metadata*)
67.0ms    0.0%  20,0                            llvm::MDTuple::getImpl(llvm::LLVMContext&, llvm::ArrayRef<llvm::Metadata*>, llvm::Metadata::StorageType, bool)
19.0ms    0.0%  0,0                         <Unknown Address>
3.0ms    0.0%   3,0                          llvm::hashing::detail::hash_short(char const*, unsigned long, unsigned long long)
3.0ms    0.0%   3,0                          llvm::CallInst::doesNotAccessMemory() const
2.0ms    0.0%   2,0                          llvm::DenseMapBase<llvm::DenseMap<llvm::MDTuple*, llvm::detail::DenseSetEmpty, llvm::MDNodeInfo<llvm::MDTuple>, llvm::detail::DenseSetPair<llvm::MDTuple*> >, llvm::MDTuple*, llvm::detail::DenseSetEmpty, llvm::MDNodeInfo<llvm::MDTuple>, llvm::detail::DenseSetPair<llvm::MDTuple*> >::insert(std::__1::pair<llvm::MDTuple*, llvm::detail::DenseSetEmpty>&&)
2.0ms    0.0%   2,0                          std::__1::enable_if<is_hashable_data<llvm::Metadata* const>::value, llvm::hash_code>::type llvm::hashing::detail::hash_combine_range_impl<llvm::Metadata* const>(llvm::Metadata* const*, llvm::Metadata* const*)
1.0ms    0.0%   1,0                          llvm::MDNode::~MDNode()
1.0ms    0.0%   1,0                          llvm::CloneAndPruneIntoFromInst(llvm::Function*, llvm::Function const*, llvm::Instruction const*, llvm::ValueMap<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, bool, llvm::SmallVectorImpl<llvm::ReturnInst*>&, char const*, llvm::ClonedCodeInfo*)
1.0ms    0.0%   1,0                          llvm::ValueHandleBase::AddToExistingUseList(llvm::ValueHandleBase**)
1.0ms    0.0%   1,0                          zone_size
1.0ms    0.0%   1,0                          llvm::DenseMapBase<llvm::DenseMap<llvm::MDNode const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseSetPair<llvm::MDNode const*> >, llvm::MDNode const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseSetPair<llvm::MDNode const*> >::InsertIntoBucketImpl(llvm::MDNode const* const&, llvm::detail::DenseSetPair<llvm::MDNode const*>*)
1.0ms    0.0%   1,0                          je_tcache_event_hard
1.0ms    0.0%   1,0                          llvm::Value::getValueName() const
1.0ms    0.0%   1,0                          llvm::MDNodeOpsKey::calculateHash(llvm::ArrayRef<llvm::Metadata*>)
1.0ms    0.0%   1,0                          operator delete(void*)
19.0ms    0.0%  1,0                         llvm::BasicBlock::eraseFromParent()
16.0ms    0.0%  4,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >, llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >::destroyAll()
15.0ms    0.0%  3,0                         llvm::Instruction::eraseFromParent()
13.0ms    0.0%  4,0                         llvm::ValueHandleBase::AddToUseList()
12.0ms    0.0%  3,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::MDNode const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseSetPair<llvm::MDNode const*> >, llvm::MDNode const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseSetPair<llvm::MDNode const*> >::insert(std::__1::pair<llvm::MDNode const*, llvm::detail::DenseSetEmpty>&&)
9.0ms    0.0%   3,0                         llvm::Instruction::getMetadataImpl(unsigned int) const
9.0ms    0.0%   0,0                         free
8.0ms    0.0%   4,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode>, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseMapPair<llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode> > >, llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode>, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseMapPair<llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode> > >::operator[](llvm::MDNode const* const&)
8.0ms    0.0%   4,0                         llvm::classifyEHPersonality(llvm::Value const*)
7.0ms    0.0%   3,0                         llvm::Value::replaceAllUsesWith(llvm::Value*)
7.0ms    0.0%   0,0                         llvm::MetadataTracking::track(void*, llvm::Metadata&, llvm::PointerUnion<llvm::MetadataAsValue*, llvm::Metadata*>)
7.0ms    0.0%   3,0                         llvm::MDNode::deleteAsSubclass()
6.0ms    0.0%   3,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >, llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >::FindAndConstruct(llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&&)
5.0ms    0.0%   2,0                         llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::paramHasAttr(unsigned int, llvm::Attribute::AttrKind) const
5.0ms    0.0%   4,0                         llvm::CallGraphNode::addCalledFunction(llvm::CallSite, llvm::CallGraphNode*)
4.0ms    0.0%   1,0                         llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::getOperandBundle(unsigned int) const
4.0ms    0.0%   3,0                         llvm::DominatorTreeBase<llvm::BasicBlock>::~DominatorTreeBase()
4.0ms    0.0%   0,0                         llvm::BranchInst::~BranchInst()
4.0ms    0.0%   4,0                         llvm::Value::stripPointerCasts()
4.0ms    0.0%   2,0                         llvm::Instruction::setMetadata(unsigned int, llvm::MDNode*)
4.0ms    0.0%   4,0                         llvm::AssumptionCacheTracker::getAssumptionCache(llvm::Function&)
4.0ms    0.0%   2,0                         llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::doesNotThrow() const
4.0ms    0.0%   3,0                         void std::__1::vector<llvm::MDNode const*, std::__1::allocator<llvm::MDNode const*> >::__push_back_slow_path<llvm::MDNode const* const&>(llvm::MDNode const* const&&&)
4.0ms    0.0%   3,0                         llvm::Instruction::mayReadFromMemory() const
3.0ms    0.0%   3,0                         llvm::SymbolTableListTraits<llvm::BasicBlock>::removeNodeFromList(llvm::BasicBlock*)
3.0ms    0.0%   1,0                         llvm::StringMapImpl::RemoveKey(llvm::StringMapEntryBase*)
3.0ms    0.0%   2,0                         llvm::Argument::hasNoAliasAttr() const
3.0ms    0.0%   3,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >, llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >::initEmpty()
3.0ms    0.0%   3,0                         llvm::ValueHandleBase::RemoveFromUseList()
2.0ms    0.0%   0,0                         je_free
2.0ms    0.0%   2,0                         llvm::SymbolTableListTraits<llvm::BasicBlock>::transferNodesFromList(llvm::SymbolTableListTraits<llvm::BasicBlock>&, llvm::ilist_iterator<llvm::BasicBlock>, llvm::ilist_iterator<llvm::BasicBlock>)
2.0ms    0.0%   0,0                         llvm::Value::getName() const
2.0ms    0.0%   2,0                         DYLD-STUB$$std::__1::enable_if<is_hashable_data<llvm::Metadata* const>::value, llvm::hash_code>::type llvm::hashing::detail::hash_combine_range_impl<llvm::Metadata* const>(llvm::Metadata* const*, llvm::Metadata* const*)
2.0ms    0.0%   1,0                         llvm::User::operator delete(void*)
2.0ms    0.0%   2,0                         llvm::Function::getFunctionType() const
2.0ms    0.0%   0,0                         llvm::BasicBlock::~BasicBlock()
2.0ms    0.0%   2,0                         llvm::Function::getReturnType() const
2.0ms    0.0%   2,0                         llvm::DIBuilder::DIBuilder(llvm::Module&, bool)
2.0ms    0.0%   2,0                         llvm::Instruction::mayWriteToMemory() const
1.0ms    0.0%   1,0                         llvm::DIBuilder::~DIBuilder()
1.0ms    0.0%   1,0                         llvm::AttributeSet::getParamAlignment(unsigned int) const
1.0ms    0.0%   1,0                         llvm::Use::operator=(llvm::Value*)
1.0ms    0.0%   1,0                         operator delete(void*)
1.0ms    0.0%   1,0                         llvm::MDNode::deleteTemporary(llvm::MDNode*)
1.0ms    0.0%   1,0                         llvm::Argument::getParamAlignment() const
1.0ms    0.0%   1,0                         llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::getCallee() const
77.0ms    0.0%  4,0                        llvm::AttributeFuncs::mergeAttributesForInlining(llvm::Function&, llvm::Function const&)
65.0ms    0.0%  8,0                        llvm::createLegacyPMAAResults(llvm::Pass&, llvm::Function&, llvm::BasicAAResult&)
49.0ms    0.0%  0,0                        <Unknown Address>
5.0ms    0.0%   5,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::MDNode const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseSetPair<llvm::MDNode const*> >, llvm::MDNode const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseSetPair<llvm::MDNode const*> >::insert(std::__1::pair<llvm::MDNode const*, llvm::detail::DenseSetEmpty>&&)
3.0ms    0.0%   3,0                         llvm::Function::getPersonalityFn() const
3.0ms    0.0%   3,0                         llvm::DIBuilder::DIBuilder(llvm::Module&, bool)
2.0ms    0.0%   2,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode>, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseMapPair<llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode> > >, llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode>, llvm::DenseMapInfo<llvm::MDNode const*>, llvm::detail::DenseMapPair<llvm::MDNode const*, llvm::TypedTrackingMDRef<llvm::MDNode> > >::operator[](llvm::MDNode const* const&)
2.0ms    0.0%   2,0                         llvm::CallSiteBase<llvm::Function, llvm::BasicBlock, llvm::Value, llvm::User, llvm::Use, llvm::Instruction, llvm::CallInst, llvm::InvokeInst, llvm::Use*>::doesNotThrow() const
2.0ms    0.0%   2,0                         llvm::sys::AtomicIncrement(unsigned int volatile*)
2.0ms    0.0%   2,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >, llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >::initEmpty()
2.0ms    0.0%   2,0                         llvm::CallGraphNode::removeCallEdgeFor(llvm::CallSite)
2.0ms    0.0%   2,0                         llvm::AssumptionCacheTracker::getAssumptionCache(llvm::Function&)
2.0ms    0.0%   2,0                         llvm::isa_impl<llvm::DbgValueInst, llvm::Instruction, void>::doit(llvm::Instruction const&)
2.0ms    0.0%   2,0                         llvm::GlobalValue::isDeclaration() const
2.0ms    0.0%   2,0                         llvm::BranchInst::~BranchInst()
2.0ms    0.0%   2,0                         llvm::CloneAndPruneFunctionInto(llvm::Function*, llvm::Function const*, llvm::ValueMap<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&, bool, llvm::SmallVectorImpl<llvm::ReturnInst*>&, char const*, llvm::ClonedCodeInfo*, llvm::Instruction*)
1.0ms    0.0%   1,0                         llvm::AttributeSet::getParamAlignment(unsigned int) const
1.0ms    0.0%   1,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >, llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >::FindAndConstruct(llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >&&)
1.0ms    0.0%   1,0                         llvm::DenseMapBase<llvm::DenseMap<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >, llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH, llvm::DenseMapInfo<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > > >, llvm::detail::DenseMapPair<llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >, llvm::WeakVH> >::destroyAll()
1.0ms    0.0%   1,0                         llvm::ReplaceableMetadataImpl::replaceAllUsesWith(llvm::Metadata*)
1.0ms    0.0%   1,0                         llvm::isFreeCall(llvm::Value const*, llvm::TargetLibraryInfo const*)
1.0ms    0.0%   1,0                         llvm::DbgDeclareInst::classof(llvm::Value const*)
1.0ms    0.0%   1,0                         llvm::CallInst::addAttribute(unsigned int, llvm::Attribute::AttrKind)
1.0ms    0.0%   1,0                         void std::__1::vector<std::__1::unique_ptr<llvm::AAResults::Concept, std::__1::default_delete<llvm::AAResults::Concept> >, std::__1::allocator<std::__1::unique_ptr<llvm::AAResults::Concept, std::__1::default_delete<llvm::AAResults::Concept> > > >::__emplace_back_slow_path<llvm::AAResults::Model<llvm::BasicAAResult>*>(llvm::AAResults::Model<llvm::BasicAAResult>*&&)
1.0ms    0.0%   1,0                         llvm::iplist<llvm::Instruction, llvm::SymbolTableListTraits<llvm::Instruction> >::splice(llvm::ilist_iterator<llvm::Instruction>, llvm::iplist<llvm::Instruction, llvm::SymbolTableListTraits<llvm::Instruction> >&)
1.0ms    0.0%   1,0                         llvm::cast_retty<llvm::IntrinsicInst, llvm::Instruction*>::ret_type llvm::dyn_cast<llvm::IntrinsicInst, llvm::Instruction>(llvm::Instruction*)
1.0ms    0.0%   1,0                         llvm::MDTuple::getImpl(llvm::LLVMContext&, llvm::ArrayRef<llvm::Metadata*>, llvm::Metadata::StorageType, bool)
1.0ms    0.0%   1,0                         llvm::DominatorTreeBase<llvm::BasicBlock>::~DominatorTreeBase()
1.0ms    0.0%   1,0                         llvm::Function::getReturnType() const
1.0ms    0.0%   1,0                         llvm::DIBuilder::~DIBuilder()
1.0ms    0.0%   1,0                         llvm::LLVMContext::diagnose(llvm::DiagnosticInfo const&)
1.0ms    0.0%   1,0                         llvm::isAllocLikeFn(llvm::Value const*, llvm::TargetLibraryInfo const*, bool)
1.0ms    0.0%   1,0                         llvm::AAResults::Model<llvm::GlobalsAAResult>::~Model()
1.0ms    0.0%   1,0                         llvm::ValueHandleBase::RemoveFromUseList()
47.0ms    0.0%  1,0                        llvm::isInstructionTriviallyDead(llvm::Instruction*, llvm::TargetLibraryInfo const*)
21.0ms    0.0%  1,0                        llvm::emitOptimizationRemark(llvm::LLVMContext&, char const*, llvm::Function const&, llvm::DebugLoc const&, llvm::Twine const&)
12.0ms    0.0%  9,0                        llvm::createLegacyPMBasicAAResult(llvm::Pass&, llvm::Function&)
4.0ms    0.0%   0,0                        llvm::AAResults::~AAResults()
1.0ms    0.0%   1,0                        llvm::sys::AtomicIncrement(unsigned int volatile*)
1.0ms    0.0%   1,0                        llvm::sys::MemoryFence()
1.0ms    0.0%   0,0                        llvm::Value::getName() const
7.0ms    0.0%   0,0                       <Unknown Address>
3.0ms    0.0%   3,0                        llvm::createLegacyPMAAResults(llvm::Pass&, llvm::Function&, llvm::BasicAAResult&)
2.0ms    0.0%   2,0                        llvm::Inliner::shouldInline(llvm::CallSite)
1.0ms    0.0%   1,0                        llvm::AttributeFuncs::mergeAttributesForInlining(llvm::Function&, llvm::Function const&)

from r68k.

emoon avatar emoon commented on July 25, 2024

Added a perf capture

from r68k.

emoon avatar emoon commented on July 25, 2024

I will report this on the Rust issue tracker unless you object as it seems to be a compiler issue.

from r68k.

marhel avatar marhel commented on July 25, 2024

No, that's fine. I'll henceforth be known as "that guy who broke Rust stable!" ;-)

from r68k.

marhel avatar marhel commented on July 25, 2024

However, it's not completely broken, just glacially slow to compile!

On my Macbook Pro (Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz)

time cargo build
real    0m7.509s
user    0m5.912s
sys 0m0.686s
-rwxr-xr-x   1 martin  staff  19755836  2 Feb 22:52 r68k

versus

time cargo build --release
real    43m21.073s
user    31m11.730s
sys 0m7.084s
-rwxr-xr-x   1 martin  staff  22447892  2 Feb 19:36 r68k

or about 350 times slower...

from r68k.

emoon avatar emoon commented on July 25, 2024

Some progress is being made on the Rust issue

from r68k.

bluss avatar bluss commented on July 25, 2024

You can circumvent the issue by using &'static str instead of String in OpcodeHandler in fact (no drop glue needed in that case, so the extra code generation doesn't happen).

from r68k.

marhel avatar marhel commented on July 25, 2024

Oh! Thanks for that tip! I'll try that. I still have a lot to learn in Rust.

from r68k.

emoon avatar emoon commented on July 25, 2024

I that is a great advice. I haven't actually looked at the code that may cause the issue. And yeah, &'static str is to prefer as String is heap allocated while &'static str is not

from r68k.

emoon avatar emoon commented on July 25, 2024

It also seems that there has been some progress on fixing the issue also which is great and the fix seems to speed up the compile in general also.

from r68k.

bluss avatar bluss commented on July 25, 2024

Right, &'static str is to prefer when it's possible to use it.

from r68k.

marhel avatar marhel commented on July 25, 2024

In case I follow the advice given by @bluss to circumvent the drop issue, anyone interested in rust-lang/rust#31381 can checkout commit 880cf15, to see a version of the code that exhibits this issue.

from r68k.

emoon avatar emoon commented on July 25, 2024

I think the change should be this one 9e375cb

from r68k.

marhel avatar marhel commented on July 25, 2024

Yay, thanks @bluss, using &'static str cuts the compile time from 43 minutes to 10 seconds :)

from r68k.

bluss avatar bluss commented on July 25, 2024

😄 nice. The upstream fix that benefits all of rust is of course great too.

from r68k.

marhel avatar marhel commented on July 25, 2024

Absolutely! I'm proud to have maximized my rust-beginner skills in writing horrific enough code to make a two year old underlying issue apparent, and fixable. Hooray for learning from mistakes :)

from r68k.

emoon avatar emoon commented on July 25, 2024

Think we can close this now as the compiler issue has been fixed and the use of str reduced the time quite a bit :)

from r68k.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.